今天分享一種新的排序演算法-----選擇排序
選擇排序演算法實現原理:
以公升序為例:
首先假定陣列首元素為陣列元素中最大的元素,用maxpos來標記最大元素
接著遍歷陣列中其他元素,並將最大值與所遍元素比較,如果有那個元素大於maxpos標記的元素,就用maxpos來標記它(更新maxpos)
每一次遍歷選出陣列中最大值,並將其與陣列尾部元素交換,交換完畢之後更新尾部元素 再將maxpos標記陣列首元素
,然後重複上述操作
具體**如下,**解釋在注釋中.
#include#include// 交換函式
void swap(int *x,int *y)
// 排序演算法哪家強 之 選擇排序
void selectsort(int *array, int size)
// 每一次選出最大值就將其與陣列尾部元素交換
// 有可能原陣列的元素就是公升序序列,因此在交換之前先判斷一下
// 如果原陣列元素就在合適的位置上就沒有必要交換
if (maxpos != size - 1 - i)
} } }
// 列印陣列函式
void print(int *array, int size)
printf("\n");
}int main();
int size = sizeof(array) / sizeof(array[0]);
selectsort(array, size);
print(array, size);
system("pause");
return 0;
}
排序演算法哪家強之選擇排序2 雙管齊下版
昨天給大家分享了選擇排序,昨天我們用乙個標記符maxpos來遍歷待排序區間,然後每乙個遍歷,找出乙個最大值,然後將其放在區間的末尾,今天我們嘗試一種新的方法.這種方法更高效 快捷.原理如下 我們使用兩個標記符 maxpos 標記最大值元素位置 minpos 標記最小值元素位置 讓這兩個標記符同時從陣...
排序演算法 排序演算法之選擇排序
最近在學習排序演算法,就排序演算法中的四大經典排序 氣泡排序 快速排序 選擇排序 插入排序。會出一系列的講解排序演算法的部落格。今天繼快速排序之後整理一下選擇排序。選擇排序,就是從一列未排序的陣列中先選出最小 最大 的數,放在陣列的第一位,第一位原來的數字放在最小的原來的位置,再選出第二小的數,放在...
排序演算法之選擇排序 選擇排序 堆排序
直接選擇排序 如下 下面 是一次迴圈同時挑選出最大和最小數,並將其與左右交換 選擇排序 void selectionsort int a,int len swap a min a left 如果最大數的下標在為left,證明要交換的最大數已經被 換到min小標所表示的位置,只需要將right和min...