程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言冒泡排序實現教程

C語言冒泡排序實現教程

編輯:關於C語言
 

冒泡排序基本思想

 將n個記錄看作按縱向排列,每趟排序時自下至上對每對相鄰記錄進行比較,若次序不符合要求(逆序)就交換。每趟排序結束時都能使排序范圍內關鍵字最小的記錄象一個氣泡一樣升到表上端的對應位置,整個排序過程共進行n-1趟,依次將關鍵字最小、次小、第三小…的各個記錄“冒到”表的第一個、第二個、第三個…位置上。

 初態 第1趟 第2趟 第3趟 第4趟 第5趟 第6趟 第7趟

  38   12    12    12    12    12    12    12

  20   38    20    20    20    20    20    20

  46   20    38    25    25    25    25    25

  38   46    25    38    38    38    38    38

  74   38    46    38    38    38    38    38

  91   74    38    46    46    46    46    46

  12   91    74    74    74    74    74    74

  25   25    91    91    91    91    91    91

 /*

 Title: 冒泡排序

 Author: Li Aimin

 Date: May 2007

 算法功能:冒泡排序算法實現將一個長度為n的線性表r上的所有元素按關鍵字升序排列。

 */

 #include<stdio.h>

 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<n)&&(flag==1)) /*外循環控制排序的總趟數*/

 { flag=0;

 for(j=n;j>i;j--) /*內循環控制一趟排序的進行*/

 if(r[j]<r[j-1]) /*相鄰元素進行比較,若逆序就交換*/

 {

 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);

 }

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved