?? 簡單選擇排序.cpp
字號:
//* * * * * * * * * * * * * * * * * * * * * * * *
//*CHAPTER :7 (7_5) *
//*PROGRAM :簡單選擇排序 *
//*CONTENT :簡單選擇排序 *
//* * * * * * * * * * * * * * * * * * * * * * * *
#include <dos.h>
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20 //排序表的最大容量
typedef struct //定義排序表的結構
{int elemword[MAXSIZE]; //數據元素關鍵字
int count; //表中當前元素的個數
}SqList;
void InitialSqList(SqList&); //初始化排序表
void SelectSort(SqList &); //簡單選擇排序
int SelectMinKey(SqList,int); //尋找最小關鍵字的記錄
void PrintSqList(SqList); //顯示表中的所有元素
void main()
{SqList L; //聲明表L
char j='y';
textbackground(3); //設定屏幕顏色
textcolor(15);
clrscr();
//-------------------------程序說明-------------------------------
printf("本程序將演示簡單選擇排序的操作。\n");
//----------------------------------------------------------------
while(j!='n'&&j!='N')
{InitialSqList(L); //待排序列初始化
SelectSort(L); //簡單選擇排序
PrintSqList(L); //顯示排序結果
printf("繼續進行下一次排序嗎?(Y/N)");
scanf(" %c",&j);
}
printf("程序運行結束!\n按任意鍵關閉窗口!\n");
getchar();getchar();
}
void InitialSqList(SqList &L)
{//表初始化
int i;
printf("請輸入待排序的記錄的個數:");
scanf("%d",&L.count);
printf("請輸入待排序的記錄的關鍵字(整型數):\n");
for(i=1;i<=L.count;i++)
scanf("%d",&L.elemword[i]);
}
void SelectSort(SqList &L)
{//對順序表L做簡單選擇排序。
int i,j,t;
for(i=1;i<L.count;++i) //選擇第i小的記錄,并交換到位
{j=SelectMinKey(L,i); //在L.elemword[i..L.count]中選擇關鍵字最小的記錄
if(i!=j) //與第i個記錄交換
{t=L.elemword[i];
L.elemword[i]=L.elemword[j];
L.elemword[j]=t;
}
}
}
int SelectMinKey(SqList L,int low)
{//在L.elemword[low..L.count]中尋找關鍵字最小的記錄
int i,j,t;
t=L.elemword[low];
j=low;
for(i=low+1;i<=L.count;i++)
if(L.elemword[i]<t)
{t=L.elemword[i];
j=i;
}
return j;
}
void PrintSqList(SqList L)
{//顯示表中所有元素
int i;
printf("已排好序的序列如下:\n");
for(i=1;i<=L.count;i++)
printf("%4d",L.elemword[i]);
printf("\n");
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -