對一組資料進行選擇排序的方法是,在一組資料中找到最小的,排到第一位,然後從剩下的資料中找到第二個小的,排到第二位,逐次排序完成。
比如:3 ,7 ,9 ,10, 0這一組資料:
第一次排序:3,7,9,0,10,將最小的0排到第一位,3和0的位置交換,為0,7,9,3,10,然後未排序的資料為7,9,3,10,對未排序的資料繼續進行選擇排序
第二次排序:7,9,3,10,將最小的3排到第二位,7和3的位置交換,為0,3,9,7,10,然後未排序的資料為9,7,10,對未排序的資料繼續進行選擇排序
第三次排序:9,7,10,將最小的7排到第三位,7和9的位置交換,為0,3,7,9,10,然後未排序的資料為9,10,對未排序的資料繼續進行選擇排序
第四次排序:9,10,將最小的9排到第四位,然後未排序的資料為10,對未排序的資料繼續進行選擇排序。
第五次排序,10為最小的,排在第5位,排序完成。
資料對於c/c++來說儲存在陣列中,python儲存在列表中,排序過程完全一樣。
比較氣泡排序和選擇排序,兩者均經過兩個迴圈,複雜度是一樣的,均為o(n^2)。
c++**:
# include using namespace std;
#define test_array_len 7
void select_sort(int test, int len)
for(i = 0; i < len; i++)
}test[min_k] = test[i];
test[i] = min;
} return;
}void main()
; select_sort(test, test_array_len);
for (int i =0; i < test_array_len; i++)
cout << endl;
}
python實現:
#!/usr/bin/python
# -*- coding: utf-8 -*-
def select_sort(list, n):
if (n > len(list)):
return
for i in range(0, n):
min = list[i]
min_k = i
for j in range(i, n):
if list[j] < min:
min = list[j]
min_k = j
list[i], list[min_k] = list[min_k], list[i]
return list
a = [1,4,5,7,3,2,6,3,9]
print select_sort(a,len(a))
氣泡排序(C Python)
begin 1 氣泡排序思想 公升序排序 如 a 9,6,8,7,5,3 i 0第一趟排序 3與5比較,3和5交換位置,a 9,6,8,7,3,5 j len 1 3與7比較,3和7交換位置,a 9,6,8,3,7,5 j len 2 3與8比較,3和8交換位置,a 9,6,3,8,7,5 j le...
排序 快排C Python
1 i left j right 找乙個基準數 隨意,這裡不妨找a left a i 將其挖出。2 j 由後向前找比它小的數,找到後挖出此數填前乙個坑a i 中。3 i 由前向後找比它大的數,找到後也挖出此數填到前乙個坑a j 中。4 重複2,3步,直到i j,將基準數填入a i 中。include...
排序演算法二(冒泡)(C Python)
時間複雜度o n2 空間複雜度o 1 該排序演算法穩定!int swap int a,int i,int j void bubblesort int a,int n class bslist def init self,lis none self.lis lis def bubble sort se...