遞歸——簡單選擇排序


1、排序過程:

將待排序列存放在數組a[n]中。

第一次從a[1]開始,查找比a[0]小的元素,如果存在此元素,則將元素的位置信息記錄下來,運用此信息判斷查找到的元素是否為a[0],如果不是,則將a[0]與此最小元素交換值的大小。

第二次從a[2]開始,查找比a[1]小的元素.......

........

........

進行n-1次后,算法結束。

2、程序設計:

#include<stdio.h>            
void disp(int a[],int n){//參數為數組和數組中元素的個數 
    for(int i=0;i<n;i++)// 
    printf("%d\t",a[i]);
    printf("\n"); 
}
void SelectSort(int a[],int n,int i){
       int j,k,tmp;
       if(i==n-1) return;//遞歸出口
       else{
           k=i;
           for(j=i+1;j<n;j++)
           if(a[j]<a[k])//如果存在比a[k]小的數字
           k=j;//將j位置信息記錄下來,直到末尾,即k為從(i+1)到末尾的所有數字的最小值的元素位置 
       }
       if(k!=i){
           tmp=a[i];
           a[i]=a[k];
           a[k]=tmp;
       }  
       SelectSort(a,n,i+1);
}
main(){
 int a[]={2,3,5,6,1,2,435,23,9,234};
 printf("排序前:");
 disp(a,10);
 SelectSort(a,10,0);
 printf("排序后:");
 disp(a,10); 
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM