arastooms 1,046 ارسال شده در 18 مهر، ۱۳۹۵ اشتراک گذاری ارسال شده در 18 مهر، ۱۳۹۵ سلام به همه اساتید عزیز یک سری اعداد دارم که داخلش خیلی تکراری هست برای مثال 55,23,55,6,89,55,6,23,1,1,124,99,55,1,8,1,8,8,8,,0 این اعداد رو از دیتابیس میخونم و میدم به یه لیست ولی میخام اگر این عدد در لیست هست از قبل دیگه تکراری ننویسه و بدون تکرار در لیست ذخیره بشه به اینصورت 8,1,55,99,124,23,6,89,0 ممنون میشم راهنمایی بفرمایید با تشکر لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
hosseinz501 122 ارسال شده در 18 مهر، ۱۳۹۵ اشتراک گذاری ارسال شده در 18 مهر، ۱۳۹۵ در 35 دقیقه قبل، arastooms گفته است : سلام سپاس از راهنمایی خودم الان دارم از این روش استفاده میکنم میخاستم ببینم راه منطقی تر هم هست چون به نظر نمیاد روشمنطقی باشه !! در هر صورت از راهنمایی شما تشکر میکنم آقا ارسطو یه راه دیگه هم الان به ذهنم رسید که سرعتش خیلی خیلی بیشتر از روشی هست که گفتم اما در صورتیه که بازه ی اعدادتون مشخص باشه (یعنی بزرگترین و کوچکترین عددتون رو بدونین که ممکنه حداکثر و حداقل چند باشن) و این بازه خیلی بزرگ نباشه چون هر چقدر بازه بزرگتر باشه مقدار رمی هم که از سیستم مصرف میشه بیشتره : فرض می کنیم اعدادتون توی بازه ی [0,65536] باشن : Private InputInts() As Int = Array As Int(55,23,55,6,89,55,6,23,1,1,124,99,55,1,8,1,8,8,8,0) Private SortTool(65536) As Byte For i1 = 0 To InputInts.Length-1 SortTool(InputInts(i1)-1) = 1 Next InputInts = Null Private List1 As List List1.Initialize For i2 = 0 To SortTool.Length-1 If SortTool(i2) = 1 Then List1.Add((i2+1)) End If Next SortTool = Null که در این مثال اعداد غیر تکراری در List1 ریخته میشن و چون آرایه SortTool از جنس بایت هست و اندازه اون 65536 هست پس مقدار رم زیادی هم مصرف نمیشه (فقط 64 کیلوبایت => 65536/1024 = 64KB). مورد دیگه ای بود در خدمتم لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
hosseinz501 122 ارسال شده در 18 مهر، ۱۳۹۵ اشتراک گذاری ارسال شده در 18 مهر، ۱۳۹۵ سلام برای این کار فعلا دو روش ساده به نظرم می رسه : یکی استفاده از List و یکی استفاده از Map ؛ که توی این مورد به نظر من باید از Map استفاده کنین چون اگه اشتباه نکنم جستجو توی Map باینری هست اما جستجو توی list خطی هست ، به خاطر همین جستجو توی Map سرعتش خیلی بیشتر از list هست ، البته این تفاوت سرعت توی محاسبات سنگین و عملیات های طولانی احساس میشه : Private InputInts() As Int = Array As Int(55,23,55,6,89,55,6,23,1,1,124,99,55,1,8,1,8,8,8,0) Private Map1 As Map Map1.Initialize For i1 = 0 To InputInts.Length-1 If Map1.ContainsKey(InputInts(i1)) = False Then Map1.Put(InputInts(i1),Null) End If Next اگرم نیاز به بود که حتما اعداد غیر تکراری رو در لیست داشته باشین می تونین بعد از عملیات بالا ، تمام اعداد موجود در Map را در List بریزید : Private List1 As List List1.Initialize For Each keyInt As Int In Map1.Keys List1.Add(keyInt) Log("keyInt : "&keyInt) Next Map1.Initialize لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
arastooms 1,046 ارسال شده در 18 مهر، ۱۳۹۵ سازنده اشتراک گذاری ارسال شده در 18 مهر، ۱۳۹۵ در 9 دقیقه قبل، hosseinz501 گفته است : سلام برای این کار می تونین فعلا دو روش ساده به نظرم می رسه : یکی استفاده از List و یکی استفاده از Map ؛ که توی این مورد به نظر من باید از Map استفاده کنین چون اگه اشتباه نکنم جستجو توی Map باینری هست اما جستجو توی list خطی هست ، به خاطر همین جستجو توی Map سرعتش خیلی بیشتر از list هست ، البته این تفاوت سرعت توی محاسبات سنگین و عملیات های طولانی احساس میشه : Private InputInts() As Int = Array As Int(55,23,55,6,89,55,6,23,1,1,124,99,55,1,8,1,8,8,8,0) Private Map1 As Map Map1.Initialize For i1 = 0 To InputInts.Length-1 If Map1.ContainsKey(InputInts(i1)) = False Then Map1.Put(InputInts(i1),Null) End If Next اگرم نیاز به بود که حتما اعداد غیر تکراری رو در لیست داشته باشین می تونین بعد از عملیات بالا ، تمام اعداد موجود در Map را در List بریزید : Private List1 As List List1.Initialize For Each keyInt As Int In Map1.Keys List1.Add(keyInt) Log("keyInt : "&keyInt) Next Map1.Initialize سلام سپاس از راهنمایی خودم الان دارم از این روش استفاده میکنم میخاستم ببینم راه منطقی تر هم هست چون به نظر نمیاد روشمنطقی باشه !! در هر صورت از راهنمایی شما تشکر میکنم لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
سوال
arastooms 1,046
سلام به همه اساتید عزیز
یک سری اعداد دارم که داخلش خیلی تکراری هست برای مثال
55,23,55,6,89,55,6,23,1,1,124,99,55,1,8,1,8,8,8,,0
این اعداد رو از دیتابیس میخونم و میدم به یه لیست
ولی میخام اگر این عدد در لیست هست از قبل دیگه تکراری ننویسه و بدون تکرار در لیست ذخیره بشه
به اینصورت
8,1,55,99,124,23,6,89,0
ممنون میشم راهنمایی بفرمایید
با تشکر
لینک ارسال
به اشتراک گذاری در سایت های دیگر
3 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.