簡單選擇排序算法(Simple Select Sort) 就是通過n-1次關鍵字間的比較,從n-1+i個記錄中選出關鍵字最小的記錄,并好第i(1<= i <=n)個記錄交換
** 注意交換時的條件判斷
核心排序部分
void SimpleSelectSort(int * Array,int n)
{
int iMin = 0;
for(int i = 0;i <n-1;i++)
{
iMin = i;
for(int j = i+1;j<n;j++)
{
if(Array[iMin]>Array[j])
{
SWAP(Array[iMin], Array[j]);
// 或者 SWAP(iMin,j);
}
}
if(i!=iMin) // 必須要加上
{
SWAP(Array[i], Array[iMin]);
}
}
}
算法複雜度: O(n^2)
#include <iostream>
#include <windows.h>
using namespace std;
#define SWAP(X,Y) X=X+Y;Y=X-Y;X=X-Y
void PrintArray(int *Array, int iSize)
{
for (int i = 0; i < iSize; i++)
{
cout << "Current Value is " << Array[i] << endl;
}
}
void SimpleSelectSort(int * Array,int n)
{
int iMin = 0;
for(int i = 0;i <n-1;i++)
{
iMin = i;
for(int j = i+1;j<n;j++)
{
if(Array[iMin]>Array[j])
{
SWAP(Array[iMin], Array[j]);
// 或者 SWAP(iMin,j);
}
}
if(i!=iMin) // 必須要加上
{
SWAP(Array[i], Array[iMin]);
}
}
}
int main()
{
int a[10] = { 9,10,8,7,6,5,4,3,2,1 };
SimpleSelectSort(a,10);
PrintArray(a,10);
system("pause");
return 0;
}