總覺得今天狀況不是很好,腦子不是很清楚,一個選擇排序寫好久,自以為邏輯對,結果把自己繞到迷宮理去了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");
}

arrow
arrow

    archerdevil 發表在 痞客邦 留言(0) 人氣()