1. 程式人生 > >C++資料結構與STL--選擇排序

C++資料結構與STL--選擇排序

  *外部迴圈對錶進行n-1次遍歷。pass控制變數的範圍0-n-2
  *對於每次重複過程,都有一個內部迴圈掃描arr[pass]到arr[n-1]的無序子表,並判定最小元素的下標。
  *只有最小元素的下標(smallIndex)不等於pass,才交換arr[pass]和arr[smallIndex];
   




實現程式碼:

template<typename T>
//對長度為n的陣列進行選擇排序
 void selectSort(T arr[],int n)  
 {


     int pass=0;//控制外層迴圈
int smallIndex=0;//記錄子表最小元素的下標
int j=0;//控制內層迴圈

for( ;pass<n-1;pass++)  //pass控制外層迴圈,共n-1次
{
smallIndex=pass; //假設每次外層子迴圈都是第一個數最小
for(j=pass+1;j<n;j++)
{
if(arr[smallIndex]>arr[j])
{
smallIndex=j;//每找到一個更小的元素,就記錄下該元素的下標 
}
}


if(smallIndex!=pass)//交換arr[pass],arr[smallIndex] 
{
 T tem;
         tem=arr[pass];
 arr[pass]=arr[smallIndex];
         arr[smallIndex]=tem;

}
}


 }