C語言之排序法
排序是一種重要的、基本的算法。排序的方法有很多,本文將逐一介紹。。。。。
①冒泡排序法:每次將相鄰兩個數作比較,然後將小的調到前面。如果有n個數,則要進行n-1次比較。在第一趟比較中要進行n-1次的兩兩比較,在第j趟比較中要進行n-j次兩兩比較。
#include<stdio.h>
int main()
{
int num[10]={7,6,9,2,5,3,8,0,9,1};
int i,j,temp;
temp=num[0];
printf("\n排序前的數: ");
for(i=0;i<10;i++)//排序前的數
{
printf("%d",num[i]);
if(i!=10) printf(" ");
}
/**********************************************************************************/
for(i=0;i<9;i++)//10個數,那麼第一個數要和剩下的9個數做比較(0-8就有9個數了)
{
for(j=0;j<9-i;j++)
{
if(num[j]>num[j+1])
{
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
/************************************************************************************/
printf("\n\n排序後的數: ");
for(i=0;i<10;i++)
{
printf("%d",num[i]);
if(i!=10) printf(" ");
else printf("\n\n");
}
return 0;
}
②選擇排序法:所謂選擇排序法就是先將10個數中最小的數與num[0]對調;然後再將剩下的數num[1]~num[9]中最小的數與num[1]對調。。。。。 共比較9輪。
#include<stdio.h>
int main()
{
int num[10]={7,6,9,2,5,3,8,0,9,1};
int i,j,k,temp;
temp=num[0];
printf("\n排序前的數: ");
for(i=0;i<10;i++)//排序前的數
{
printf("%d",num[i]);
if(i!=10) printf(" ");
}
/*****************************************************************/
for(i=0;i<10-1;i++)
{ k=i;//k用來記錄最小值的下標的,默認每輪的第一個
for(j=i+1;j<10;j++)
{
if(num[j]<num[k])
k=j;// 保存最小值的下標
temp=num[k];
num[k]=num[i];//num[i] 是每輪最小的那個值
num[i]=temp;
}
}
/*****************************************************************/
printf("\n\n排序後的數: ");
for(i=0;i<10;i++)
{
printf("%d",num[i]);
if(i!=10) printf(" ");
else printf("\n\n");
}
return 0;
}