сортирует криво. у него прочему то 4.3 меньше 15 и больше 7. То что меньше я понимаю. А вот как оно больше 7... это загадки
Добавлено @ 09:51 Сделал как обычно через попу. Но если кому то подойдет, то может воспользуется. изначально получаю данные из листбокса. разбиваю данные в массив. после чего произвожу сортировку и засовываю обратно в листбокс.
| Код | string[][] sort(string[][] mas) { string[][] massiv = new string[0][]; massiv = mas; repit: for (int i = 0; i < massiv.Length - 1; i++) if (Convert.ToDouble(massiv[i][0]) > Convert.ToDouble(massiv[i + 1][0])) { string[] buf = massiv[i]; massiv[i] = massiv[i + 1]; massiv[i + 1] = buf; goto repit; } return massiv; }
string[][] sort_position(string[][] mas, int position) { string[][] massiv = new string[0][]; massiv = mas; repit: for (int i = 0; i < massiv.Length - 1; i++) { double v1 = 0, v2 = 0; try { v1 = Convert.ToDouble(massiv[i][position]); } catch { } try { v2 = Convert.ToDouble(massiv[i + 1][position]); } catch { } if (v1 > v2) { if (massiv[i][position - 1] == massiv[i + 1][position-1]) { string[] buf = massiv[i]; massiv[i] = massiv[i + 1]; massiv[i + 1] = buf; goto repit; } } } return massiv; }
string[][] massivchik(string[][] mas) { int max = 0; for (int i = 0; i < mas.Length; i++) if (max < mas[i].Length) max = mas[i].Length; //max++; string[][] massiv = new string[0][];
for (int i = 0; mas.Length > i; i++) { Array.Resize(ref massiv, massiv.Length + 1); massiv[massiv.Length - 1] = new string[max]; for (int t = 0; t < massiv[i].Length; t++) { if (mas[i].Length > t) massiv[i][t] = mas[i][t]; else massiv[i][t] = ""; } } massiv = sort(massiv); for (int i = 1; i < max; i++) massiv = sort_position(massiv, i); return massiv; }
private void button6_Click(object sender, EventArgs e) { string[][] massiv = new string[0][]; for (int i = 0; i < listBox1.Items.Count; i++) { string[] mas=new string[0]; string stroka=listBox1.Items[i].ToString(); int begin = 0; for (int i1 = 0; i1 < stroka.Length; i1++) { if ((stroka[i1] == '.') || (stroka[i1] == ',')) { if (begin < i1) { Array.Resize(ref mas, mas.Length + 1); mas[mas.Length - 1] = stroka.Substring(begin, i1 - begin + 0); } begin = i1 + 1; } if (i1 == stroka.Length - 1) if (begin < i1 + 1) { Array.Resize(ref mas, mas.Length + 1); mas[mas.Length - 1] = stroka.Substring(begin, i1 - begin + 1); } } Array.Resize(ref massiv, massiv.Length + 1); massiv[massiv.Length - 1] = mas; } massiv = massivchik(massiv); listBox1.Items.Clear(); for (int i = 0; i < massiv.Length; i++) { string str = ""; for (int t = 0; t < massiv[i].Length; t++) { if (massiv[i][t] != "") { if (str != "") str = str + "."; str = str + massiv[i][t]; } } listBox1.Items.Add(str); } }
|
|