C程序中實現排序的選擇法和起泡法

C程序中實現排序的選擇法和起泡法

C語言中對1個數組中的10個數排序時,涉及到兩種基本方法:選擇法和起泡法。兩種方法算法不同,結構大同小異。

兩種方法的相同之處在於結構上基本相同。(均由兩層for循環控制實現)

選擇法的算法:

10個數a[0]a[1]...a[8]a[9]在內存中連續存放,對10個數排序需進行0~8九次循環,其中第n次循環的內容是將a[n]之後的數(a[n+1]...a[9])依次分別與a[n]比較,每當出現比a[n]小的數時即將值與a[n]互換。如此下來,當第0次循環結束時,a[0]已被10個數中最小的數替換,第1次循環結束時,a[1]已被剩餘9個數中最小的數替換...8次循環結束時,a[8]已被最後剩餘兩個數中較小者替換,a[9]則爲10數中最大者。

起泡法的算法:

10個數a[0]a[1]...a[8]a[9]在內存中連續存放,對10個數排序需進行0~8九次循環,其中第n次循環的內容是將從a[0]a[9-n]的每相鄰兩項相互比較,(即a[0]a[1]比較a[1]a[2]比較...)每當出現前一項比後一項大時,即將這兩項的值互換。如此下來,第0次循環結束時,10個數中最大的數已沉至底即a[9]已被最大的數替換,第1次循環結束時,a[8]被剩餘9個數中最大的數替換...8次循環結束時a[1]被最後剩餘兩個數中較大者替換,a[0]則爲10個數中最小者。

一.選擇法

#include<stdio.h>

void main()

{void sort(int arrary[],int n);

int a[10],i;

printf("enter the array\n");

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

scanf("%d",&a[i]);

sort(a,10);

printf("the sorted array:\n");

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

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

}

void sort(int array[],int n)

{int i,j,k,t;

for(i=0;i<n-1;i++)

{k=i;

for(j=i+1;j<n;j++)

if(array[j]<array[k])

k=j;

t=array[k]; array[k]=array[i]; array[i]=t;}

}

二.起泡法

#include<stdio.h>

void main()

{void sort(int arrary[],int n);

int a[10],i;

printf("enter the array\n");

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

scanf("%d",&a[i]);

sort(a,10);

printf("the sorted array:\n");

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

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

}

void sort(int array[],int n)

{int i,j,t;

for(i=0;i<n-1;i++)

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

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

{t=a[j];

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

a[j+1]=t;}

}

發佈了30 篇原創文章 · 獲贊 104 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章