選擇排序法及其優化

2021-06-25 13:12:00 字數 699 閱讀 3957

選擇排序法及其優化

巧若拙選擇排序基礎演算法是每一趟從待排序的資料元素中選出最小(或最大)的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。

選擇排序基礎演算法**如下:

void selectsort_1(int vec, int n) //選擇排序基礎演算法

int i, j, min;

inttemp;

for(i=0; imin= i;

for(j=i+1; jif(vec[j] < vec[min])

min= j;

if(min != i)

temp= vec[i];

vec[i]= vec[min];

vec[min]= temp;

為了減少比較的次數,可採用每一趟掃瞄時,同時選出最大和最小值,這樣逐步縮小掃瞄範圍,直到只剩下乙個元素。

改進版本中有一點要注意:如果最大值在最左邊,肯定要被移走,此時要轉移到相應的新位置。

選擇排序基礎改進**如下:

void selectsort_2(int vec, int n) //

選擇排序改進演算法:同時選出最大和最小值

elseif (vec[i] > vec[max])

} if (min !=left)

}     

if (max !=right)

} }

選擇排序及其優化

一 原始的選擇排序 選擇排序 selection sort 是一種簡單直觀的 排序演算法 它的工作原理是每一次從待排序的 資料元素 中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。includeusing namespace std void selections...

選擇排序及其優化

選擇排序基礎版 public static int selectsort int array int temp array i array i array index array index temp return array 選擇排序就是在未序的序列中選出乙個最大或最小的值放到已序序列的末尾,當內...

選擇排序及其優化

public void selectionsort int a if minindex i 其中 swap 方法用於交換陣列元素 private void swap int a,int i,int j 一共進行 n 1 輪,每輪都確定乙個最小的數 也可以是最大的 記錄下最小數的索引,最後再和開頭的數...