// SelectSort.cpp : 定義控制檯應用程序的入口點。 // /* 選擇排序:對比數組中前一個元素跟後一個元素的大小,若是後面的元素比前面的元素小則用一個變量k來記住他的位置, 接着第二次比較,前面「後一個元素」現變成了「前一個元素」,繼續跟他的「後一個元素」進行比較若是後面的元素比他要小則用變量k記住它在數組中的位置(下標), 等到循環結束的時候,咱們應該找到了最小的那個數的下標了,而後進行判斷,若是這個元素的下標不是第一個元素的下標,就讓第一個元素跟他交換一下值, 這樣就找到整個數組中最小的數了。而後找到數組中第二小的數,讓他跟數組中第二個元素交換一下值,以此類推。 最壞時間複雜度:O(n^2) 最好:同上 平均:同上 穩定性:不穩定 */ #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; void SelectSort(int *a,int n) { int i,j,min,temp; for( i = 0; i < n-1; i++ ) { min = i; for( j = i+1; j < n; j++ ) if( a[min] > a[j] ) min = j; if( min != i ) { temp = a[i]; a[i] = a[min]; a[min] = temp; } } } int _tmain(int argc, _TCHAR* argv[]) { int a[] = {88,3,24,1,100,44,1,7}; SelectSort(a,8); for( int i = 0; i < 8; i++ ) { cout<<a[i]<<setw(3); } return 0; }