#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; }