选择排序

选择排序(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))
原文地址:https://www.cnblogs.com/xswl/p/10082525.html