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

C語言冒泡、選擇、快速、希爾排序程序代碼參考

編輯:關於C語言
 

1】這是冒泡法的程序:

#include<stdio.h>

void sort(int array[],int size)

{

int i,j,temp,nowswap;

/*下面是利用相鄰的比較,把大的數放到上面;*/

for(i=0;i<size-1;i++)
{

noswap=TRUE;
for(j=i+1;j<size;j++)

if(array[i]>array[j])

{

temp=array[i];

array[i]=array[j];

array[j]=temp;

noswap=FALSE;


}

if(noswap) break;

}

}

void main()

{

int i;

int a[10]={1,33,78,34,787,213,132,35,32,21};

sort(a,10);

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

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

}

【2】這是選擇法的程序:

#include<stdio.h>

void sort(int array[],int size)

{

int i,j,k,temp;

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

{

k=i;

/*把最小的那一個數找出來,並且用a[k]記下來,然後與a[i]交換;*/

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

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

k=j;

temp=array[k];

array[k]=array[i];

array[i]=temp;

}

}

void main()

{

int a[]={12,43,54,23,32,65,87,2,34,54};

int i;

sort(a,10);

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

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

}

【3】這是一個快速排序的程序:

#include<stdio.h>

void quick_sort(int array[],int first,int last)//first,last分別為數組上下標的范圍;

{

int temp,low,high,list_separator;

low=first;

high=last;

/*下面是比較數組中的大小,把數組中的數與中間數比較,大的放在後半部分,比中間數小的放在前半部分,*/

list_separator=array[(first+last)/2];//中間數;

do{

while(array[low]<list_separator)//中間數與前半部分比較;

low++;

while(array[high]>list_separator)// 中間數與後半部分比較;

high--;

if(low<=high)//前半部分與後半部分交換;

{

temp=array[low];

array[low++]=array[high];

array[high--]=temp;

}

}while(low<=high);

if(first<high)

quick_sort(array,first,high);//利用遞歸的辦法,實行循環;

if(low<last)

quick_sort(array,low,last);//利用遞歸的辦法,實行循環;

}



void main()

{

int a[9]={12,23,34,65,93,32,21,9,8};

quick_sort(a,0,8);

for(int i=0;i<9;i++)

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

printf(" ");

}

這是一個希爾排序的程序:

#include<stdio.h>

void shell_sort(int array[],int size)

{

int temp,gap,i,flag;

gap=size/2;

do{

do{

flag=0;/*利用標記,使前半部分與後半部分的數都對應比較過,前半部分大於後半部分的交換,直到都比較過,並且前半部分的數小於與前部分一一對應的後部分的數時,退出while循環*/

for(i=0;i<size-gap;i++)

if(array[i]>array[i+gap])

{

temp=array[i];

array[i]=array[i+gap];

array[i+gap]=temp;

flag=1;

}

}while(flag);

}while(gap=gap/2);

}

void main()

{

int array[]={1,2,32,43,64,7654,321,42,23,97,56,32,78,45,32},i;

shell_sort(array,15);

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

printf("%10d",array[i]);

}
 

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