排序:选择排序
2013-03-03 21:02 gitenius 阅读(234) 评论(0) 收藏 举报选择排序基本概念:每一趟从待排序的数据元素中选出最小的一个,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
一:时间复杂度
原序列:
20 97 85 20 16 90 74 47 89
排序中:
第1次排序: 16 97 85 20 20 90 74 47 89
第2次排序: 16 20 85 97 20 90 74 47 89
第3次排序: 16 20 20 97 85 90 74 47 89
第4次排序: 16 20 20 47 85 90 74 97 89
第5次排序: 16 20 20 47 74 90 85 97 89
第6次排序: 16 20 20 47 74 85 90 97 89
第7次排序: 16 20 20 47 74 85 89 97 90
第8次排序: 16 20 20 47 74 85 89 90 97
第9次排序: 16 20 20 47 74 85 89 90 97
共有N个元素的序列,经过第M(M<N)次排序后,有N-M个待排元素。
算法复杂度为:O(n*2)。
二:算法稳定性
选择排序不具有稳定性。
原序列:
20 97 85 20 16 90 74 47 89
排序中:
16 97 85 20 20 90 74 47 89
16 20 85 97 20 90 74 47 89
16 20 20 97 85 90 74 47 89
16 20 20 47 85 90 74 97 89
16 20 20 47 74 90 85 97 89
16 20 20 47 74 85 90 97 89
16 20 20 47 74 85 89 97 90
16 20 20 47 74 85 89 90 97
16 20 20 47 74 85 89 90 97
排序后:
16 20 20 47 74 85 89 90 97
三:示例代码
1: public class SelectSortLib
2: {
3: public int[] Sort(int[] arr)
4: {
5: for (int outer = 0; outer < arr.Count(); outer++)
6: {
7: int min = outer;
8:
9: for (int inner = outer + 1; inner < arr.Count(); inner++)
10: {
11: if (arr[min] > arr[inner])
12: {
13: min = inner;
14: }
15: }
16:
17: if (min != outer)
18: {
19: int temp = arr[min];
20: arr[min] = arr[outer];
21: arr[outer] = temp;
22: }
23: }
24: return arr;
25: }
26: }
浙公网安备 33010602011771号