冒泡排序基本思想
将n个记录看作按纵向排列,每趟排序时自下至上对每对相邻记录进行比较,若次序不符合要 求(逆序)就交换。每趟排序结束时都能使排序范围内关键字最小的记录象一个气泡一样升到表上端的对应位置,整个排序过程共进行n-1趟,依次将关键字最 小、次小、第三小…的各个记录“冒到”表的第一个、第二个、第三个…位置上。
初态 第1趟 第2趟 第3趟 第4趟 第5趟 第6趟 第7趟
3812121212121212
2038202020202020
4620382525252525
3846253838383838
7438463838383838
9174384646464646
1291747474747474
2525919191919191
/*
Title: 冒泡排序
Author: Li Aimin
Date: May 2007
算法功能:冒泡排序算法实现将一个长度为n的线性表r上的所有元素按关键字升序排列。
*/
#include
void bubblesort(int r[],int n)
{ /*elements are stored in r[1] to r[n]*/
int i,j,flag;
int temp;
flag=1;
i=1;
while((i { flag=0; for(j=n;j>i;j--) /*内循环控制一趟排序的进行*/ if(r[j] { flag=1; temp=r[j]; r[j]=r[j-1]; r[j-1]=temp; } i++; } } /*bubblesort*/ void show(int r[] , int n) { /*elements are stored in r[1] to r[n]*/ int i; for(i=1;i<=n;i++) printf(" %d ",r[i]); printf("n"); } void main() { int a[9201],i; for(i=0;i<9201;i++) a[i]=9201-i; //show(a,100000); bubblesort(a,9200); show(a,9200); } 更多信息请查看IT技术专栏