冒泡排序(C/C++实现)

来源:互联网 发布:extjs5 项目实例源码 编辑:程序博客网 时间:2024/05/17 23:29
#include <iostream>using namespace std;#define MAXSIZE 10typedef 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;}


0 0
原创粉丝点击