總覺得今天狀況不是很好,腦子不是很清楚,一個選擇排序寫好久,自以為邏輯對,結果把自己繞到迷宮理去了XDD
所謂的選擇排序,就是當你要由小到大排序的時候,先找到最小的紀錄起來,然後與第一個位置交換。
比如說當你今天有意個array{5,4,3,2,1},你打算由小到大重新排列
那第一輪過後一定是{1,4,3,2,5}
接下來{1,2,3,4,5}
for(i = 0;i<size; i++)
{
flag = i;//標記目前位置
for(j = i+1; j<size; j++)
{
if (a[flag]>a[j])
{
flag = j;//找到最小位置
}
}
int temp = a[flag];
a[flag]=a[i];
a[i]=temp;
}
BIG Oh的計算部份
運算次數的最大指數項應該都是n2,所以時間複雜度取其最大指數項應為O(n2)
實際例子如下:
#include <iostream>
using namespace std;
const int size = 10;//整數常數
void SS(int a[size], int arraysize)
{
int flag, i, j;
for(i = 0;i<(size); i++)
{
flag = i;//標記目前位置
for(j = i+1; j<size; j++)
{
if (a[flag]>a[j])
{
flag = j;//找到最小位置
}
}
int temp = a[flag];
a[flag]=a[i];
a[i]=temp;
}
}
void main ()
{
int arr[size]= {4,5,3,1,2,6,8,7,9,10};
SS(arr,size);
for (int i=0;i<size; i++)
{
cout<<arr[i]<<"\t";
}
system("pause");
}