// 科科 類選擇排序法(選擇排序公升級版)
// // 思路:
// 對於乙個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 第三步就是...