选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
C++
1 #include<iostream>
2 using namespace std;
3
4 template<class T>
5 int length(T& arr)
6 {
7 return sizeof(arr) / sizeof(arr[0]);
8 }
9
10 void print(int * const src ,const int src_lenght)
11 {
12 for(int i = 0 ;i<src_lenght;i++)
13 cout<<src[i]<<" ";
14
15 cout<<endl;
16 }
17
18 int * Selection_sort(int * const src,const int src_lenght)
19 {
20 int min_index;
21 int tmp;
22 for(int i = 0;i<src_lenght-1;i++){
23 min_index = i;
24 for(int j = i;j<src_lenght-1;j++)
25 if(src[min_index]>src[j])
26 min_index = j;
27
28
29 if(i!=min_index)
30 {
31 tmp = src[i];
32 src[i] = src[min_index];
33 src[min_index] = tmp;
34 print(src,src_lenght);
35 }
36
37 }
38 return src;
39 }
40
41 int main()
42 {
43 int a[6] = {6,-9,10,10,-3,11};
44 Selection_sort(a,length(a));
45 print(a,length(a));
46
47 return 0;
48 }
python
1 """选择排序"""
2 def selectionSort(src):
3
4 for i in range(len(src) - 1):
5 min_index = i
6 for j in range(i,len(src) - 1 ):
7 if (src[j] > src[j + 1]):
8 min_index = j + 1
9 if(min_index != i):
10 src[i], src[min_index] = src[min_index], src[i]
11 return src
12
13
14 a = [6,8,1,0,3,4,5]
15 print(selectionSort(a))