選擇排序 C python實現

2021-08-28 18:03:14 字數 1402 閱讀 6847

對一組資料進行選擇排序的方法是,在一組資料中找到最小的,排到第一位,然後從剩下的資料中找到第二個小的,排到第二位,逐次排序完成。

比如: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...