開心生活站

位置:首頁 > IT科技 > 

冒泡法排序c語言

IT科技7.94K

冒泡法排序c語言是什麼?對於許多用戶來說是不瞭解的知識,本期就和大家分享關於冒泡法排序c語言,感興趣的朋友可以接着往下看。

冒泡法排序c語言

C語言冒泡排序法的排序規則

將被排序的記錄數組R[1..n]垂直排列,每個記錄R看作是重量爲R.key的氣泡。根據輕氣泡不能在重氣泡之下的原則,從下往上掃描數組R:凡掃描到違反本原則的輕氣泡,就使其向上"飄浮"。如此反覆進行,直到最後任何兩個氣泡都是輕者在上,重者在下爲止。

1、初始 R[1..n]爲無序區。

2、第一趟掃描 從無序區底部向上依次比較相鄰的兩個氣泡的重量,若發現輕者在下、重者在上,則交換二者的位置。

即依次比較(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);對於每對氣泡(R[j+1],R[j]),若R[j+1].key<R[j].key,則交換R[j+1]和R[j]的內容。 第一趟掃描完畢時,"最輕"的氣泡就飄浮到該區間的頂部,即關鍵字最小的記錄被放在最高位置R[1]上。

3、第二趟掃描 掃描R[2..n]。

掃描完畢時,"次輕"的氣泡飄浮到R[2]的位置上…… 最後,經過n-1 趟掃描可得到有序區R[1..n] 注意: 第i趟掃描時,R[1..i-1]和R[i..n]分別爲當前的有序區和無序區。掃描仍是從無序區底部向上直至該區頂部。掃描完畢時,該區中最輕氣泡飄浮到頂部位置R上,結果是R[1..i]變爲新的有序區。

c語言冒泡排序的編程爲:

#include <stdio.h>

void sort(int *a,int len)

{int i=0;

int j;

int t;

for(i=0;i<len-1;i++)[1] 

{

for(j=0;j<len-i-1;j++)

{

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

}

int main(int argc, char *argv[])

{

int a[10]={

-999,2,3,77,12,88,0,-8,99,100

};

int i=0;

sort(a,10);

for(i=0;i<10;i++)

{

printf("%d ",a[i]);

}

return 0;

}

標籤:語言 冒泡