數據結構與算法之選擇排序圖文詳解及代碼 (C++實現)

實現:

#include<iostream>
using namespace std;
#define MAXSIZE 20//順序表的最大長度
typedef int KeyType;//定義關鍵字類型爲整型
typedef int InfoType;
typedef struct
{
    KeyType key;//關鍵字項
    InfoType otherinfo;//其他數據項
}RedType;
typedef struct
{
    RedType r[MAXSIZE+1];//r[0]閒置或做哨兵單元
    int length;//順序表的長度
}SqList;//順序表類型

void SelectSort(SqList &L)//對順序表L做簡單快速排序
{
    RedType t;
    for(int i=1;i<L.length;++i)//在L.r[i..L.length]中選擇關鍵字最小的記錄
    {
        int k=i;
        for(int j=i+1;j<=L.length;j++)
            if(L.r[j].key<L.r[k].key)
            k=j;//k指向此趟排序中關鍵字最小的記錄
        if(k!=i)
        {
            t=L.r[i];
            L.r[i]=L.r[k];
            L.r[k]=t;
        }
    }
}

int main()
{
    SqList L;
    for(int i=1;i<=10;i++)
        L.r[i].key=11-i;
    L.length=10;
    for(int i=1;i<=L.length;i++)
        cout<<L.r[i].key<<" ";
        cout<<endl;
    SelectSort(L);
    for(int i=1;i<=L.length;i++)
        cout<<L.r[i].key<<" ";
        cout<<endl;
    return 0;
}

運行結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章