📄 bubbles.cpp
字号:
/*算法思想简单描述:
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上
而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较
小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要
求相反时,就将它们互换。
下面是一种改进的冒泡算法,它记录了每一遍扫描后最后下沉数的
位置k,这样可以减少外层循环扫描的次数.*/
#include<iostream.h>//冒泡排序
#define MAX 4
void bubble_sort(int a[],int n);//数组名称,数组中元素个数
int main()
{
int *p, i,n,a[MAX];
n=MAX;
p=a;
cout<<"Input "<<n<<" number for sorting :"<<endl;
for(i=0;i<MAX;i++)
{
cin>>a[i];
}
cout<<endl;
bubble_sort(p,MAX);
cout<<"After bubble_sort:"<<endl;
for(i=0;i<MAX;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
void bubble_sort(int a[],int n)//冒泡排序
{
int j,k,h;
for(h=n-1;h>0;h=k) /*循环到没有比较范围*/
{
for(j=0,k=0;j<h;j++) /*每次预置k=0,循环扫描后更新k*/
{
if (a[j]>a[j+1]) /*大的放在后面,小的放到前面*/
{
int t;
t=a[j];
a[j]=a[j+1];
a[j+1]=t; /*完成交换*/
k=j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -