// 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;
}