?? 冒泡排序.cpp
字號(hào):
#include <stdio.h>
typedef int InfoType;
typedef enum {FALSE,TRUE} Boolean;
#define n 10 //假設(shè)的文件長(zhǎng)度,即待排序的記錄數(shù)目
typedef int KeyType; //假設(shè)的關(guān)鍵字類型
typedef struct { //記錄類型
KeyType key; //關(guān)鍵字項(xiàng)
InfoType otherinfo; //其它數(shù)據(jù)項(xiàng),類型InfoType依賴于具體應(yīng)用而定義
} RecType;
typedef RecType SeqList[n+1]; //SeqList為順序表類型,表中第0個(gè)單元一般用作哨兵
void main()
{
void BubbleSort(SeqList R);
int i;
SeqList R;
printf("請(qǐng)輸入欲排序的數(shù):");
for (i=1;i<=n;i++)
scanf("%d",&R[i].key);
printf("排序前:");
for (i=1;i<=n;i++)
printf("%d ",R[i].key);
printf("\n");
BubbleSort(R);
printf("排序后:");
for (i=1;i<=n;i++)
printf("%d ",R[i].key);
printf("\n");
}
void BubbleSort(SeqList R)
{ //R[1..n]是待排序的文件,采用自下而上掃描對(duì)R做冒泡排序
int i,j;
Boolean exchange; //交換標(biāo)志
for(i=1;i<n;i++){ //最多做n-1趟排序
exchange=FALSE; //本趟排序開(kāi)始前,交換標(biāo)志應(yīng)為假
for(j=n-1;j>=i;j--) //對(duì)當(dāng)前無(wú)序區(qū)R[i..n]自下向上掃描
if(R[j+1].key<R[j].key){//交換記錄
R[0]=R[j+1]; //R[0]不是哨兵,僅做暫存單元
R[j+1]=R[j];
R[j]=R[0];
exchange=TRUE; //發(fā)生了交換,故將交換標(biāo)志置為真
}
if(!exchange) //本趟排序未發(fā)生交換,提前終止算法
return;
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -