数组用直接选择法进行大到小排序
开发工具与技术:工具:Visual Studio/c#,技术:C#
作者:刘胜
撰写时间:2019-01-20
一、直接选择排序的基本思想
基本思想:直接选择排序的基本思想是将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素值,注意这里区别冒泡排序,不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换(如从最后一个元素开始排序),这样排序好的位置逐渐扩大,最后整个数组都成为已排序好的格式。
直接选择排序方法属于选择排序的一种,它的排序速度要比冒泡排序快一些,也是常用的排序算法。(补充)
二、算法示例
每一趟从待排序的数据元素中选择最大(或最小)的一个元素,顺序地放在已排好序的数列的最后,直到全部待排序的数据元素排完。
列如:
初始数组资源【100, 23, 11, 2, 5】
第一趟排序后【100, 23, 11, 5】2
第二趟排序后【100, 23, 11】2,5
第三趟排序后【100, 23】2,5,11
第四趟排序后【100】2,5,11,23
三、算法实现
static void Main(string[] args)
{
sort();//调用sort();
}
static void sort(){
int[] array = { 100, 23, 11, 2, 5 };//初始数组
for (int i = 0; i < array.Length; i++){
int index = i;
for (int j = 1 + i; j < array.Length; j++){
if (array[j] > array[index])
{
index = j;//比较最大的值之后,把索引赋给index,作为下一次比较
}
}
int temp = array[i];//存放临时变量
array[i] = array[index];
array[index] = temp;
}
var t = from i in array where i > 10 select i;//Linq语句
Console.Write("first Num is:{0} ", array[0]);//输出数组中的最大值
Console.WriteLine("\n\tarray.TypeName is: {0} \n\t t.TypeName is: {1} ", array.GetType().Name, t.GetType().Name);//打印数组类型
string arrayloop = "";
do
{
string tm = showArray(array);
Console.WriteLine("\nDo you console array[yes][no]");
arrayloop = Console.ReadLine();
Console.WriteLine();
} while (arrayloop.ToLower() == "yes");
}
static string showArray(int[] array)//打印数组顺序
{
string str = "";
for (int i = 0; i < array.Length; i++)
{
Console.Write("{0}> ", array[i]);
}
str = Console.ReadLine();
return str;
}
四、运行结果