c選擇排序

選擇排序:老是選出最小或者最大的放在未排序部分的第一個位置 ide

 

  
  
  
  
  1. #include <stdio.h> 
  2. void printArr(int arr[],int length){ 
  3.         int i; 
  4.         for(i=0;i<length;i++){ 
  5.                 printf("%d,",arr[i]); 
  6.         } 
  7.         printf("\n"); 
  8.  
  9. void selectionSort(int arr[],int length){ 
  10.         int i,m=0,n=0,temp;//m最小元素的位置,n未排序部分的起始位置 
  11.         while(n<length){ 
  12.                 for(i=n;i<length;i++){ 
  13.                         if(arr[i] < arr[m]){//改爲大於 則是從大到小排序 
  14.                                 m = i; 
  15.                         } 
  16.                 } 
  17.                 temp = arr[n]; 
  18.                 arr[n] = arr[m]; 
  19.                 arr[m] = temp; 
  20.                 n++; 
  21.                 m = n; 
  22.         } 
  23.         printArr(arr,length); 
  24.  
  25. int main(void){ 
  26.         int arr[10] = {2,23,245,12,76,12,67,213,546,12}; 
  27.         printArr(arr,10); 
  28.         selectionSort(arr,10); 
相關文章
相關標籤/搜索