一、算法原理
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
选择排序算法的运作如下:
1.对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置
2.接着第二次比较,前面“后一个元素”现变成了“前一个元素”,继续跟他的“后一个元素”进行比较如果后面的元素比他要小则用变量k记住它在数组中的位置(下标), 等到循环结束的时候,下标k的元素就是最小的数
3.判断下标k的元素是不是第一个元素,否则就把下标k的元素和第一个元素交换
4.以此类推
二、算法分析
选择排序的时间复杂度是O(n^2),是不稳定的排序算法。
三、算法实现
public class SelectionSort { public void Sort(int[] list) { int k = 0; for (int i = 0; i < list.Length - 1; i++) { for (int j = i; j < list.Length; j++) { if (list[k] > list[j]) k = j; } if (i != k) { int temp = list[i]; list[i] = list[k]; list[k] = temp; } } } }