?? bubbles.cpp
字號(hào):
/*算法思想簡(jiǎn)單描述:
在要排序的一組數(shù)中,對(duì)當(dāng)前還未排好序的范圍內(nèi)的全部數(shù),自上
而下對(duì)相鄰的兩個(gè)數(shù)依次進(jìn)行比較和調(diào)整,讓較大的數(shù)往下沉,較
小的往上冒。即:每當(dāng)兩相鄰的數(shù)比較后發(fā)現(xiàn)它們的排序與排序要
求相反時(shí),就將它們互換。
下面是一種改進(jìn)的冒泡算法,它記錄了每一遍掃描后最后下沉數(shù)的
位置k,這樣可以減少外層循環(huán)掃描的次數(shù).*/
#include<iostream.h>//冒泡排序
#define MAX 4
void bubble_sort(int a[],int n);//數(shù)組名稱,數(shù)組中元素個(gè)數(shù)
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) /*循環(huán)到?jīng)]有比較范圍*/
{
for(j=0,k=0;j<h;j++) /*每次預(yù)置k=0,循環(huán)掃描后更新k*/
{
if (a[j]>a[j+1]) /*大的放在后面,小的放到前面*/
{
int t;
t=a[j];
a[j]=a[j+1];
a[j+1]=t; /*完成交換*/
k=j; /*保存最后下沉的位置。這樣k后面的都是排序排好了的。*/
}
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -