我的類選擇排序

2021-06-16 05:50:05 字數 1130 閱讀 6804

// 科科 類選擇排序法(選擇排序公升級版)

// // 思路:

// 對於乙個n個數的一維陣列a[n]進行n/2次迴圈掃瞄

// 每次掃瞄的範圍隨掃瞄次數i的增加變成a[i]~a[n-1-i] (i從0開始)

// 每次完成一次掃瞄後,將最小數放到a[i],最大數放到a[n-1-i]

//// 該演算法比選擇排序少用 n/2次迴圈

// 今天看了選擇排序法,感覺方法很好。可是,它每完成一次迴圈掃瞄只把最小的放到左邊,

// 感覺太沒效率了,所以就自己研究了乙個類似選擇排序的演算法。

// 在原來的演算法上,每次掃瞄時找出最大數和最小數。這樣感覺效率就高多了~~

#include

#define  n 6

#define  debugmode 1

int main(void)

;int i,j,k,max,min,imax,imin,tmp;

// 演算法開始

for ( i=0 ;i< n/2 ; ++i)

}if (max>min)

else           

}// 演算法結束

}printf(" sorted:/n");

for (i=0;i//演算法 比較:

選擇排序:

原 陣列 5,32,56,17,8,79

第 1 次:5,[32,56,17,8,79]

第 2 次:5,8,[56,17,32,79]

第 3 次:5,8,17,[56,32,79]

第 4 次:5,8,17,32,[56,79]

第 5 次:5,8,17,32,56,[79]

最後:5,8,17,32,56,79

我的選擇排序:

原 陣列 5,32,56,17,8,79

第 1 次:5,[32,56,17,8],79

第 2 次:5,8,[32,17],56,79

第 3 次:5,8,17,32,56,79

最後:5,8,17,32,56,79

原 陣列 5,32,56,17,8 

第 1 次:5,[32,8,17],56

第 2 次:5,8,[17],32,56

最後:5,8,17,32,56

選擇類排序

選擇類排序基本思想 每一趟在n i 1 i 1,2,n 1 個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。1.簡單選擇排序 void selectsort recordtype r int n 對記錄陣列r做簡單選擇排序,n為陣列長度 for i 1 i n 1 i k i for j i ...

排序演算法 選擇類排序

選擇排序的演算法思想 重待排序的元素序列中選擇最小 最大 的元素,將其放入在已排序序列的最前 最末 其餘的元素構成新的待排序列。依次類推,直到待排序元素序列中沒有待排元素。選擇排序主要有兩種 簡單選擇排序和堆排序。接下來我們來分別介紹一下這兩種排序演算法。演算法思想 簡單選擇排序是一種簡單的選擇類排...

選擇類排序總結

選擇類排序總結 所謂選擇類排序的思想就是 從陣列的中選出最大或最小的,通過多次選擇最後達到排序的目的 首先是簡單選擇排序 思想 每趟掃瞄中,選出最小的數字放在最前面,然後從第二個數字開始掃瞄,直到只剩下最後乙個數不需要掃瞄 void easyselect sort int a,int n 第三步就是...