C语言入门必学:冒泡、选择、插入排序算法详解
c语言三种排序
常用的C语言排序算法主要有三种:冒泡排序、选择排序、插入排序。
1.冒泡排序冒泡排序:
从第一个数开始,依次比较,满足判断条件时进行交换。
代码实现(以降序排序为例)
#include
intmain()
intarray[10]={6,9,7,8,5,3,4,0,1,2};
for(inti=0;i<10>
for(intj=0;j<10>
{//前一个数字大于后一个数字时发生Exchangetemp=array[j];
}
}//打印数组for(inti=0;i<10>
2.选择排序以升序为例:
即在指定下标的数组元素之后(指定下标的元素一般从第一个元素开始,然后按顺序返回),查找Values除指定下标元素之外的元素都与指定元素进行比较,如果满足条件则进行交换。
与冒泡排序的区别可以这么理解,因为冒泡排序是比较两个相邻的值,而选择排序是遍历数组找到数组元素并与指定的数组元素进行比较。
(以升序为例)
#include
intmain()
intarray[10]={6,9,7,8,5,3,4,0,1,2};
inttemp,索引;
for(inti=0;i<9>
{
index=j;
}
if(i!=索引)
{
temp=array[i];
array[i]=array[索引];
数组[索引]=temp;
}
for(inti=0;i<10>
printf("%2d"array[i])
return0;
}
3.快速排序
通过排序将待排序的数据分成两个独立的部分。
一部分的所有数据都小于另一部分的所有数据,因此使用这种方法可以快速对两部分数据分别进行排序。
整个排序过程可以递归地完成,从而使整个数据成为一个已排序的序列。
voidQuickSort(int*arr,intsize)
inttemp,i,j;
for(i=1;i<大小;i++)
0;j--){
if(arr[j] < temp=arr[j]; arr[j]=arr[j-1]; arr[j-1]=temp; } } } 方法一:用三个变量存储三个数字,按从大到小的顺序排列: inta,b,c,tmp; printf("请输入3个数字:"); scanf("%d%d%d",&a,&b,&c); if(a { tmp=a; a=b; b=tmp; } if(ah { tmp=a; a=c; c=tmp; } if(b { tmp=b; b=c; c=tmp; } printf("按从大到小的顺序:%d,%d,%d\n",a,b,c); inti=0,j=0,tmp=0,a[3]; printf("请输入三个数字:"); for(i=0;i<3> scanf("%d",&a[i]); for(i=0;i<2> for(j=0;j<2> if(a[i] { tmp=a[i]; a[i]=a[i+1]; a[i+1]=tmp; } printf("从大到小排序:"); for(i=0;i<3> printf("%d",&a[i]); printf("\n");C语言中将三个数字进行排序的几种写法