1.選擇排序:首先在未排序序列中找到最小或最大元素,存放到排序序列的起始位置,再從剩餘未排序元素中繼續尋找最小或最大元素,然後放到已排序序列的末尾。重複第二步,直到所有元素均排序完畢
2.選擇排序和冒泡排序原理差不多,都是相鄰兩個元素進行比較,然後選擇最大或最小的出來,但選擇排序是記錄最大或最小元素的下標,
相比於冒泡排序,少了很多交換元素的操作,因此佔用cpu比較少時間,速度快一些。時間複雜度:O(n²)
3.代碼如下
1 #include<stdio.h> 2 void selectionSort(int * arr,int num) 3 { 4 int minIndex; 5 int temp; 6 int i,j; 7 for(i=0;i<num;i++) 8 { 9 minIndex=i; 10 for(j=i+1;j<num;j++) 11 { 12 if(arr[j]<arr[minIndex]) 13 minIndex=j; 14 } 15 //找到未排序序列中的最小元素,和當前第i元素進行交換 16 temp=arr[i]; 17 arr[i]=arr[minIndex]; 18 arr[minIndex]=temp; 19 } 20 } 21 int main() 22 { 23 int i; 24 int arr[10]={1,3,-9,0,10,2,8,9,19,-1}; 25 selectionSort(arr,10);//選擇排序 26 for(i=0;i<10;i++) 27 printf("%d\n",arr[i]); 28 return 0; 29 }