排序——選擇排序

選擇排序--

基本原理:(升序)對數據進行遍歷,找出最小的數與第一個數進行位置交換;接着從第二個數開始進行遍歷,從中再找出最小的數與第二個數進行位置交換;重複該過程,直至只剩下一個數爲止。

算法分析:交換移動數據次數少,每趟的比較次數相同,第i趟的排序的次數爲(n-i)次;
   交換次數爲0~n-1(有序~逆序)。最終的排序時間是比較與交換的次數,算法的時間複雜度爲O(n*n)
 

實現代碼(C):

 #include <stdio.h> 
  void SelectSort(int *a , int len)
  {
int i ,j;
int temp , flag;               / /存放最小值及其下標 
for(i=0; i<len; i++)
{
temp = a[i];                         
flag = i;
for(j=i+1; j<len; j++)
{
if(a[j] < temp)
{
temp = a[j];                //找出每次遍歷的最小值  及下標 
flag = j;                  
}


}
//if (flag != i)
  {
a[flag] = a[i];                      //將最小值與遍歷的開始值 交換位置 
a[i] = temp;
  }
}
 
  }
 int main()
 {
int i;
int a[] = {4,7,8,1,5,6,9,0,3,2};
int len = sizeof(a)/sizeof(a[0]);     //利用sizeof()求數組的長度 
SelectSort(a, len);
for(i=0; i<len; i++)
{
printf("%d ",a[i]);
}
return 0;
 }














發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章