C++实现冒泡排序

/*
    冒泡法的基本思想是:相邻两数比较,若前面数较大,则两数交换位置,直至最后一个元素被处理,

最大的元素就“沉”到下面,即在最后一个元素的位置上。这样如果有n个元素共进行n-1轮处理。而事实上

n-1轮是最多的处理次数。只要在某一轮排序中没有进行元素交换,说明已排序好序,可以提前退出外循环

结束排序。可以通过设置标志变量flag来实现,其实初始值为0,有交换,flag=1,否则flag=0不变,用break

语句提前结束排序过程。

*/

#include<iostream>
using namespace std;

#define N 10

void sort(int b[],int k)
{
    int i,j,t;
    for(i=0;i<k-1;i++)
    {
        t=0;
        for(j=0;j<k-i-1;j++)
        {
            if(b[j]>b[j+1])
            {
                t=b[j];
                b[j]=b[j+1];
                b[j+1]=t;
                t=1;
            }
            
        }
        if(0==t)
            break;
    }
}

void print(int b[],int k)
{
    int i;
    for(i=0;i<k;i++)
    {
        if(i%5==0)
        {
            cout<<endl;
        }
        cout<<b[i]<<"\t";
    }
}

int main()
{
    int a[N];
    int i;
    cout<<"请输入"<<N<<"个数据:"<<endl;
    for(i=0;i<N;i++)
    {
        cout<<"a["<<i<<"]=";
        cin>>a[i];
    }
    sort(a,N);
    print(a,N);
    cout<<endl;
    return 0;
}

 

posted on 2022-06-13 00:14  笛若心生  阅读(288)  评论(0)    收藏  举报

导航