我有重复值的整数数组。我需要按降序排序并打印2行。
Algorythm:
Console.Write($"{maxPos} ");
index
Console.Write($"{a[i]} ");)
麻烦的是我无法在控制台中打印索引,无论是什么。
using System;
public class SortProblem
{
public static void Main()
{
Sort();
}
public static void Sort()
{
var array = new []
{
10, 10, 5, 2, 2, 5, 6, 7, 8, 15, 4, 4, 4, 2, 3, 5, 5, 36, 32, 623, 7, 475, 7, 2, 2, 44, 5, 6, 7, 71, 2
};
for (int index = 0; index < array.Length -1; index++)
{
int max = index;
for (int elemIndex = index+1; elemIndex < array.Length; elemIndex++)
{
if (array[elemIndex] > array[max])
{
max = elemIndex;
}
}
int tmp = array[index];
array[index] = array[max];
array[max] = tmp;
}
foreach (int element in array)
{
Console.Write (element+" ");
}
}
}
预期输出为:
19 21 29 25 17 18 9 19 21 21 19 20 22 28 21 27 16 18 26 27 29 22 27 29 27 25 26 27 28 29 30 623 475 71 44 36 32 15 10 10 8 7 7 7 7 6 6 5 5 5 5 5 4 4 4 3 2 2 2 2 2 2
答案 0 :(得分:1)
最简单的解决方案:
Favorite
但是要回顾一下你的算法:
CREATE TABLE Example
(
ID int,
MyChar char(1)
);
INSERT INTO Example (ID, MyChar)
VALUES ('1','[');
答案 1 :(得分:1)
using System;
public class SortProblem
{
public static void Main()
{
Sort();
Console.ReadKey();
}
public static void Sort()
{
var a = new[]
{
10, 10, 5, 2, 2, 5, 6, 7, 8, 15, 4, 4, 4, 2, 3, 5, 5, 36, 32, 623, 7, 475, 7, 2, 2, 44, 5, 6, 7, 71, 2
};
Max_elements(a);
Console.WriteLine();
Sort_elements(a);
}
private static void Max_elements(int[] a)
{
/*"індекс" = 0 */
for (int index = 0; index < a.Length; index++)
{
/*Знаходить у списку найбільше значення таке,
*що його позиція дорівнює або більша за "index"
*(справа від елемента на позиції "індекс")*/
int maxPos = index, tmp;
/* відсортує заданий масив "a"
* у порядку спадання "elemIndex < a"
* за допомогою алгоритму сортування вибором ".Length"*/
for (int elemIndex = index + 1; elemIndex < a.Length; elemIndex++)
{
/*Якщо елемент на позиції elemIndex
*більше елемента на позиції maxPos,
*то необхідно онвити значення "індекс"*/
if (a[elemIndex] > a[maxPos])
{
maxPos = elemIndex;
}
}
/*Міняє його місцями з елементом масиву на позиції "індекс"*/
tmp = a[index];
a[index] = a[maxPos];
a[maxPos] = tmp;
/*виводимо всі позиції максимального елемента і пробіл після неї*/
Console.Write($"{maxPos} ");
/*Рядок, який передує символ $ називається Інтерпольований рядок.
Інтерпольовані рядки можуть містити вирази взяті у фігурні дужки {}*/
}
}
private static void Sort_elements(int[] a)
{
for (int i = 0; i < a.Length; i++)
{
/*виводимо всі елементи відсортованого масиву і пробіл після неї*/
Console.Write($"{a[i]} ");
}
}
}