選擇排序C++實現
//選擇排序 //對比數組中前一個元素跟后一個元素的大小,如果后面的元素比前面的元素小則用一個變量k來記住他的位置, //接著第二次比較,前面“后一個元素”現變成了“前一個元素”, //繼續跟他的“后一個元素”進行比較如果后面的元素比他要小則用變量k記住它在數組中的位置(下標), //等到循環結束的時候,我們應該找到了最小的那個數的下標了,然后進行判斷,如果這個元素的下標不是第一個元素的下標, //就讓第一個元素跟他交換一下值,這樣就找到整個數組中最小的數了。然后找到數組中第二小的數,讓他跟數組中第二個元素交換一下值, //以此類推。include<iostream>
include<array>
using namespace std;
template<class T> void selection_sort(T&, int);
int main() { array<int, 10> arr = {3,2,1,5,4,7,6,9,8,0}; selection_sort(arr, arr.size());
for(int i = 0; i < 10; i++) { cout << arr[i] << endl; }
cin.get(); return 0; }
template<class T> void selection_sort(T& arr, int count) { int index = 0; auto min = arr[0]; for(int i = 0; i < count; i++) { min = arr[i]; index = i; for(int j = i+1; j < count; j++)//尋找最小值 { if(arr[j] < min) { min = arr[j]; index = j; } } if(index != i)//判斷當前最小值的下標是不是i,是的話不用交換,不是的話就和當前i位置的值交換 { int temp = arr[i]; arr[i] = arr[index]; arr[index] = temp; } } } </pre>
本文由用戶 x286 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!