选择排序
选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
思想很简单:在数组中搜索最小的数和第一个交换位置,第二个最小的值和第二个位置交换位置,依次类推
如果你觉得有困难,就先写一个依次找到小数,第二个最小数得程序,然后想办法找到这些数位置,最后再去实现位置得放置问题
代码实现
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SelectSort
{
class Program
{
static void Main(string[] args)
{
int[] arr = new int[] { 5, 1, 7, 2, 4, 9, 3 };
Console.WriteLine("排序之前:");
foreach (int i in arr)
{
Console.Write(i.ToString() + " ");
}
Console.WriteLine();
int min_index;//记录最小数的下标
int tmp;//用于值交换
for (int i =0;i<arr.Length;i++)
{
min_index = i;
for(int j=i+1;j<arr.Length;j++)
{
//如果min_index位置上那个数不是最小的,就更新min_index为新的最小值的那个下标
if (arr[min_index]>arr[j])
{
min_index = j;//寻找数组中值最小的那个位置
}
}//一轮循环后,找到最小的值得位置是min_index,最小值应该放在第一位
tmp = arr[i];//位置腾出来
arr[i] = arr[min_index];//将小得那个值放上去
arr[min_index] = tmp;
//其实就是在数组中搜索最小得和第一个交换位置,第二个最小得值和第二个位置交换位置,依次类推
}
Console.WriteLine("排序之后的结果:");
foreach (int i in arr)
{
Console.Write(i.ToString() + " ");
}
Console.WriteLine();
}
}
}