#include <iostream>
using namespace std;
#define MAXSIZE 10
typedef struct{
int data[MAXSIZE+1]; //data[0]作为哨兵
int length;
}SqList;
void Swap(SqList *L, int i, int j)
{
int tmp;
tmp = L->data[i];
L->data[i] = L->data[j];
L->data[j] = tmp;
}
void BubbleSort01(SqList *L)
{
int i, j;
for(i=1; i<L->length; i++) {
for(j=i+1; j<=L->length; j++) {
if(L->data[j] < L->data[i]) {
Swap(L, i, j); //如果后一个数据小于前一个数据,将两者进行交换
}
}
}
}
//从后向前比较
void BubbleSort02(SqList *L)
{
int i, j;
for(i=1; i<L->length; i++) {
for(j=L->length; j>i; j--) {
if(L->data[j] < L->data[j-1]) {
Swap(L, j, j-1); //如果后一个数据小于前一个数据,将两者进行交换
}
}
}
}
//如果已经有序,则不再比较
void BubbleSort03(SqList *L)
{
int i, j;
bool flag = true;
for(i=1; i<L->length && flag; i++) {
flag = false;
for(j=L->length; j>i; j--) {
if(L->data[j] < L->data[j-1]) {
Swap(L, j, j-1); //如果后一个数据小于前一个数据,将两者进行交换
flag = true;
}
}
}
}
int main()
{
int i;
SqList list;
cout <<"Please input " <<MAXSIZE<<" number :" << endl;
for(i=0; i<MAXSIZE; i++) {
cin >> list.data[i+1];
}
list.length = 10;
cout <<"The numbers before sort: ";
for(i=0; i<MAXSIZE; i++) {
cout << list.data[i+1] << " ";
}
cout << endl;
BubbleSort03(&list);
cout <<"The numbers after sort: ";
for(i=0; i<MAXSIZE; i++) {
cout << list.data[i+1] << " ";
}
cout << endl;
return 0;
}
冒泡排序(C/C++实现)
最新推荐文章于 2025-04-17 23:18:45 发布