نقل قول: Sort کردن آرایه String
نقل قول:
نوشته شده توسط
mehdi8
سلام دوستان من یه آرایه string دارم با این محتوا :
reza:30
mehdi:10
hamid:20
چطور میتونم این آرایه رو براساس اعداد بعد کاراکتر ":" یعنی همان 10, 20, 30, 40 ها از کوچک به بزرگ مرتب کنم و در آخر به این صورت دربیاد :
mehdi:10
hamid:20
reza:30
ممنون.
فقط همین 3تا؟
یا اضافه میشه بهشون؟
اگه اره، همه دو رقمی اند؟
نقل قول: Sort کردن آرایه String
نقل قول:
نوشته شده توسط
shahryars
فقط همین 3تا؟
یا اضافه میشه بهشون؟
اگه اره، همه دو رقمی اند؟
خیر ممکنه هر تعدادی باشه و عدد ها هم هر عددی میتوند باشن.اون مورد رو مثال زدم.
ممنون لطفا کمک کنید:لبخندساده:
نقل قول: Sort کردن آرایه String
نقل قول: Sort کردن آرایه String
نقل قول:
نوشته شده توسط
shahryars
میدونم چطور باید split کرد یک متن رو اما مشکل من Sort کردن یک آرایه string هستش همونطور که در پست اول گفتم ( بر اساس اعداد موجود در هر المنت )
1 ضمیمه
نقل قول: Sort کردن آرایه String
یک سورس گزاشتم
اونو دریاب به جوابت انشالاه میرسیضمیمه 139772
نقل قول: Sort کردن آرایه String
نقل قول:
نوشته شده توسط
shahryars
یک سورس گزاشتم
اونو دریاب به جوابت انشالاه میرسی
ضمیمه 139772
دوست عزیز این برنامه میاد یه آرایه int رو مرتب میکنه اما من در پست اول هم گفته بودم اولا آرایه من از نوع string بوده و اعداد به صورت string هستن دوما همراه عدد ها یک یا چند کاراکتر متغیر هست که میشه اون ها با split جدا کرده و به اعداد رسید. و
و گرنه اگه ارایه int باشه با این کد به راحتی میشه آرایه رو مرتب کرد : Array.Sort(myArray);
نقل قول: Sort کردن آرایه String
از overload دیگر متد Sort استفاده کنید و یک comparer مناسب بنویسید
https://msdn.microsoft.com/en-us/library/aw9s5t8f.aspx
نقل قول: Sort کردن آرایه String
نقل قول:
نوشته شده توسط
mehdi8
سلام دوستان به فرض مثال من یه آرایه string دارم با این محتوا :
reza:30
mehdi:10
hamid:20
چطور میتونم این آرایه رو براساس اعداد بعد کاراکتر ":" یعنی همان 10, 20, 30 ها از کوچک به بزرگ مرتب کنم و در آخر به این صورت دربیاد :
mehdi:10
hamid:20
reza:30
ممنون.
با سلام با اجازه اساتید بزرگوار سایت
شما معمولا برای مرتب سازی فقط کافیه یکی از روش های مرتب سازی رو مد نظر قرار بدید
مثل کد زیر با استفاده از روس مرتب سازی حبابی انجام شده است
for (int i = 0; i < arrayOrginal.Count; i++)
{
string min = arrayOrginal[i];
string[] split1 = min.Split(':');
int key1 = Convert.ToInt32(split1[1].Trim());
int index = i;
for (int j = 0; j < arrayOrginal.Count; j++)
{
string[] split2 = arrayOrginal[j].Split(':');
int key2 = Convert.ToInt32(split2[1].Trim());
if (key2 > key1)
{
key1 = key2;
min = arrayOrginal[j];
index = j;
}
}
if (i != index)
{
string temp = arrayOrginal[i];
arrayOrginal[i] = arrayOrginal[index];
arrayOrginal[index] = temp;
}
}
و اگر نیاز به برنامه کاملش داشتی یک پی ام به میلم بده تا اونم هم برات ارسال کنم
1 ضمیمه
نقل قول: Sort کردن آرایه String
نقل قول:
نوشته شده توسط
fakhradin
با سلام با اجازه اساتید بزرگوار سایت
شما معمولا برای مرتب سازی فقط کافیه یکی از روش های مرتب سازی رو مد نظر قرار بدید
مثل کد زیر با استفاده از روس مرتب سازی حبابی انجام شده است
for (int i = 0; i < arrayOrginal.Count; i++)
{
string min = arrayOrginal[i];
string[] split1 = min.Split(':');
int key1 = Convert.ToInt32(split1[1].Trim());
int index = i;
for (int j = 0; j < arrayOrginal.Count; j++)
{
string[] split2 = arrayOrginal[j].Split(':');
int key2 = Convert.ToInt32(split2[1].Trim());
if (key2 > key1)
{
key1 = key2;
min = arrayOrginal[j];
index = j;
}
}
if (i != index)
{
string temp = arrayOrginal[i];
arrayOrginal[i] = arrayOrginal[index];
arrayOrginal[index] = temp;
}
}
و اگر نیاز به برنامه کاملش داشتی یک پی ام به میلم بده تا اونم هم برات ارسال کنم
خیلی ممنون اما وقتی کد رو اضافه میکنم این ارور هارو میده : ( نام آرایه string[] هم cp میباشد )
ضمیمه 139773
اگه سورس این کد رو پیوست کنید ممنون میشم. :بوس:
نقل قول: Sort کردن آرایه String
نقل قول:
نوشته شده توسط
mehdi8
خیلی ممنون اما وقتی کد رو اضافه میکنم این ارور هارو میده : ( نام آرایه string[] هم cp میباشد )
ضمیمه 139773
اگه سورس این کد رو پیوست کنید ممنون میشم. :بوس:
ممنون مشکلم حل شد :لبخند: ( خط اول رو پاک کردم و به جای Count هم lenght گذاشتم:لبخندساده: )
باز هم ممنون بشدت به این کد نیاز داشتم.
نقل قول: Sort کردن آرایه String
چون به جواب رسیدید من هم کد راهنمایی ای که در چند پست قبل داشتم رو میزارم برای کسانی که نیاز دارند
یک کلاس که اینترفیس IComparer<string> را پیاده میکنه را ایجاد و در پیاده سازی متد Compare در این کلاس، عددهای درون رشته را بدست آورده و نتیجه مقایسه را بازگشت میدهیم.
public class MyConvertor : IComparer<string>
{
public int Compare(string x, string y)
{
int a = 0, b = 0;
if (!string.IsNullOrEmpty(x))
{
string[] xStrings = x.Split(':');
if (xStrings.Length > 1)
{
int.TryParse(xStrings[1], out a);
}
}
if (!string.IsNullOrEmpty(y))
{
string[] yStrings = y.Split(':');
if (yStrings.Length > 1)
{
int.TryParse(yStrings[1], out b);
}
}
return a.CompareTo(b);
}
}
کافیه به صورت زیر آرایه رو مرتب کنیم
string[] strArray = {"a:15", "b:10", "c:5"};
Array.Sort(strArray, new MyConvertor());