# include & ltstdio.h & gt
void main()
{
int a[10] = {10,9,8,7,6,5,4,3,2,1 };
int I = 0;
int j = 0;
for(I = 0;我& lt10;i++)?
for(j = I+1;j & lt10;j++)?
if(a[I]& gt;a[j])
{
int t = a[I];
a[I]= a[j];
a[j]= t;
}
for(I = 0;我& lt10;i++)
{
printf("%d ",a[I]);
}
printf(" \ n ");
}
結果:
1 2 3 4 5 6 7 8 9 10
選擇:從每壹遍要排序的數據元素中選擇最小(或最大)的元素,放在排序序列的末尾,直到所有要排序的數據元素排列完畢。
# include & ltstdio.h & gt
# include & ltstdlib.h & gt
# include & lttime.h & gt
int main(void)
{?
int a[10],I,j,tmp,b;
srand(time(NULL));?//使用時間種子隨機獲取數值。
//printf("time =[%d]\n ",time(NULL));
for(I = 0;我& lt10;i++)?
a[I]= rand()% 100;?//10隨機數
for(I = 0;我& lt10;i++)
printf("%3d ",a[I]);
printf(" \ n ");
for(I = 0;我& lt9;i++)
{?
tmp = I;
for(j = I+1;j & lt10;j++)
{
if(a[tmp]& gt;a[j])?
tmp = j;?
}?
如果(我!=tmp)?
{
//printf("tmp=[%d]\n ",tmp);
b = a[tmp];
a[tmp]= a[I];
a[I]= b;
}
}
for(I = 0;我& lt10;i++)
printf("%3d ",a[I]);
printf(" \ n ");
返回0;
}
結果:
15 17 13 68 25 32 67 12 79 41
12 13 15 17 25 32 41 67 68 79?
快速排序:通過壹次排序將待排序的數據分成兩個獨立的部分,其中壹部分的所有數據都小於另壹部分,然後按照這種方法對這兩部分數據進行快速排序,整個排序過程可以遞歸進行,從而實現整個數據成為壹個有序序列。
# include & ltstdio.h & gt
# include & ltstdlib.h & gt
# include & lttime.h & gt
#定義最大值10
#定義TRAN(x,y){ int t;t = x;x = y;y = t;}
void quicksort(int[],int,int);
int main()
{
int number[MAX]= { 0 };
int i,num
srand(time(NULL));
Printf("排序前:");
for(I = 0;我& ltMAXi++)
{
number[I]= rand()% 100;
printf("%d ",數字[I]);
}
快速排序(數字,0,MAX-1);
Printf("排序後:");
for(I = 0;我& ltMAXi++)
{
printf("%d ",數字[I]);
}
printf(" \ n ");
返回0;
}
void quicksort(int number[],int left,int right)
{
int i,j,s;
if(left & lt;右)
{
s =數字[(左+右)/2];
I = left-1;
j =右+1;
while(1)
{
while(number[++ I]& lt;s);//找到s的第壹個大於# [i]的值。
while(編號[-j]& gt;s);//原理同上。
如果(i & gt= j)
{
printf("i=[%d],j=[%d]\n ",I,j);
打破;
}
TRAN(編號[i],編號[j]);
}
快速排序(數字,左邊,I-1);//遞歸
快速排序(數字,j+1,右);//遞歸
}
}
結果:
排序前:94 294 1 48 14 27 89 388 I =[5],j = [4]。
i=[4],j=[3]
i=[1],j=[1]
i=[3],j=[2]
i=[7],j=[7]
i=[5],j=[5]
i=[9],j=[8]
排序後:1 2 3 14 27 48 88 89 94 94
純手遊,望采納!都是我自己操作驗證過的!