1.冒泡排序
这种排序方法主要思想为采用循环结构比较两个相邻元素之间的大小,较大的元素沉下去,较小的元素升上来。以下为冒泡排序的C语言代码:
#include<stdio.h>
int main()
{
int a[10] = {6,4,3,5,8,1,10,2,7,9};
printf("原序列:");
int i,j,k,temp;
int flag;
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
flag=1;
for(i=0;i<9;i++)
{
if(flag){
flag=0;
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
flag = 1;
}
}
k = i+1;
printf("第%d轮遍历后的结果:",k);
for(k=0;k<10;k++)
{
printf("%d ",a[k]);
}
printf("\n");
}
else
break;
}
return 0;
}
运行结果:
2.选择排序
这种排序方式是采用循环结构将尚未排序的序列部分中的最小值放在未排序列的首个位置,以下为选择排序的C语言代码:
#include<stdio.h>
int main()
{
int a[10] = {6,4,3,5,8,1,10,2,7,9};
printf("原序列:");
int i,j,k,temp;
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(a[i]>a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
k = i+1;
printf("第%d轮遍历后的结果:",k);
for(k=0;k<10;k++)
{
printf("%d ",a[k]);
}
printf("\n");
}
return 0;
}
运行结果:
3.快速排序
这种排序方式是先将第一个元素作为对照,将大于该元素的值置于该元素的右边,将小于该元素的值置于该元素的左边,然后重复以上步骤递归实现元素的排列。以下为快速排序的C语言代码:
#include<stdio.h>
void sort(int a[],int low,int high)
{
int i,j,k,m,temp;
i=low;
j=high;
k=a[low];
if(i>j)
{
return;
}
while(i!=j){
while((i<j)&&(a[j]>=k))
{
j--;
}
while((i<j)&&(a[i]<=k))
{
i++;
}
if(j>i)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
m = a[low];
a[low] = a[i];
a[i] = m;
sort(a,low,i-1);
sort(a,i+1,high);
}
int main()
{
int a[10] = {6,4,3,5,8,1,10,2,7,9};
int i;
printf("原序列:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
sort(a,0,9);
printf("排序后序列:");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
运行结果:
由于本人水平有限,请各位大佬提出宝贵意见