前面我們講了一下冒泡排序,原理比較簡單,但是我們發現他的排序比較慢,需要不斷的進行數據的交換。然後我們來講一講選擇排序,他不用一直進行數據的交換,他會找到最小的那個數,放在最左邊,跟冒泡排序的不同之處,冒泡是兩個數之間的比較,大的那個數放到右邊。
選擇排序
選擇排序的原理也比較好理解,比如我們有n個數,我們要對這n個數進行排序,那麼一樣我們需要進行數據的掃描,尋找最小的那個數,放在最左邊,有一點我們是需要注意的是冒泡排序每次都是從第一個數開始掃描的,而選擇排序的話是第一次是從第二開始掃描,而第二次則是從第三始掃描的,因爲第一個數已經是最小的了,就不在需要進行掃描比較了。
話不多說,用程序理解一下
1 #include<iostream> 2 3 using namespace std; 4 5 void SelectSort(int *list , int n); 6 7 int main() 8 { 9 int a[] = {2,4,6,8,0,1,3,5,7,9}; 10 SelectSort(a,10); 11 for(int k=0; k<10; k++) 12 cout << a[k] <<endl; 13 14 return 0; 15 } 16 17 void SelectSort(int *list, int n) 18 { 19 for(int i=0; i<n-1; i++) 20 { 21 int min = i; 22 for(int j=i+1; j<n; j++) 23 { 24 if(list[j]<list[min]) 25 min = j; 26 } 27 swap(list[i],list[min]); 28 } 29 30 }