選擇排序

#include <iostream>

using namespace std;

void  Swap(int &a, int &b)
{
    a = a + b;
    b = a - b;
    a = a - b; 
}

void  SwapEx(int &a, int &b)
{
    a = a ^ b;
    b = a ^ b;
    a = a ^ b; 
}

void SelectionSort(int *num, int len)
{
    // 尋找 [i, len) 區間的最小值
    for(int i = 0; i < len - 1; ++i)
    {
        int index = i;
        for(int j = i + 1; j < len; ++j)
        {
            if(num[j] < num[index])
                index = j;
        }
        if(index != i)
            SwapEx(num[i], num[index]);
    }
}

void PrintArray(int *num, int len)
{
    for(int i = 0; i < len; ++i)
    {
        cout<<num[i]<<" ";
    }
    cout<<endl;
}

int main()
{
    int len = 10;
    int num[] = {1, 9, 8, 2, 5, 3, 4, 7, 0, 6};
    PrintArray(num, len);
    SelectionSort(num, len);
    PrintArray(num, len);
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章