冒泡排序法

来源:互联网 发布:红尘男女 网络歌手 编辑:程序博客网 时间:2024/06/02 06:25
冒泡法,就是从头到尾依次比较。以从小到大为例:当i = 0的时候,将后面的依次与之比较,使得0位的数,总是较小的那一个。比较完了之后,从i=1开始,接着比较;以此类推。最终,得到从小到大的数据。最差的情况是,每次比较都要换位置,操作次数为(n-1)+(n-2)+...+1=n(n-1)/2; 最好的情况是,不用交换。这里,在计算过程中加个标识计数器iCount,标识本次是否发现逆序,可改进冒泡法。

算法:改进冒泡排序法
输入:程序内部输入一个数组
输出:将数组内的数字按从小到大排序

#include <iostream>#include <stdio.h>#include <string.h>using namespace std;void bubble_sort(int *a, int left, int right);void exch(int &e1, int &e2);int main(){    int tmp, iCount = 0;    int a[8] = {1,2,3,4,5,6,7,8}, i, j;    bubble_sort(a, 0, 8);    for(i = 0; i < 8; i++){        cout << a[i] << " ";    }    system("pause");    return 0;}// bubble sortvoid bubble_sort(int *a, int left, int right){    int i, j, iCount;    for(i = left; i < right; i++){        iCount = 0;        for(j = i + 1; j < right; j++){            if(a[i] > a[j]){            exch(a[i], a[j]);            }            iCount++;        }        if(iCount ==0){            break;        }    }}// change two integersvoid exch(int &e1, int &e2){    int tmp;    tmp = e1;    e1 = e2;    e2 = tmp;}
原创粉丝点击