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); }