C语言排序算法:冒泡、选择、插入排序详解
c语言三种排序
常用的C语言排序算法主要有三种:冒泡排序、选择排序和插入排序。
1.冒泡排序冒泡排序:
从第一个数开始,依次比较,满足判断条件时进行交换。
代码执行(以降序排序为例)
#include
intmain()
{
intarray[10]={6,9,7,8,5,3,4,0,1,2};
for(core=0;i<10>
for(intj=0;j<10>
{
{//前一个数字大于后一个数字时发生更改temp=array[j];
}
}//打印数组for(core=0;i<10>
2.选择排序以升序为例:
即在指定下标的数组元素后(指定下标的元素通常从第一个元素开始,然后按顺序返回)查找Values除指定下标元素之外的元素与指定元素进行比较,如果满足条件则更改。
与冒泡排序的区别可以理解为冒泡排序是比较两个相邻的值,而选择排序是遍历数组找到数组元素并与指定数组元素进行比较。
(以升序为例)
#include
intmain()
intarray[10]={6,9,7,8,5,3,4,0,1,2};
inttemp,索引;
for(core=0;i<9>
{
index=j;
}
if(i!=index)
{
temp=array[i];
array[i]=array[索引];
数组[索引]=temp;
}
for(core=0;i<10>
printf("%2d"array[i])
return0;
}
3.快速排序
它通过一次排序将待排序的数据分成两个独立的部分,其中一个部分的所有数据都小于另一部分的所有数据,然后用这种方法对两个部分进行排序整个排序过程可以递归地完成,从而使整个数据成为一个有序的序列。
voidQuickSort(int*arr,intsize)
{
inttemp,i,j;
for(i=1;i
{
if(arr[j] { temp=arr[j]; arr[j]=arr[j-1]; arr[j-1]=temp; } } } 1.“快速排序”利用了递归原理下面的例子说明了“快速排序”的原理。用C语言编写一个快速排序算法输入10个数
首先,给定一个数组{53,12,98,63,18,72,80,46,32,21},首先找到第一个数字——53,并将其作为中间值,即把53放入一个位置,其左侧的值小于它,而其右侧的值大于它。
{21,12,32,46,18,53,80,72,63,98},因此对一个数组进行排序就变成对两个小数组进行排序-53左边的数组和53右边的数组,以及两者表以同样的方式继续,直到顺序完全正确。
一般来说,冒泡法是程序员首先接触到的排序方法。
它的优点是原理简单,易于编程实现,但缺点是速度太慢。
2.快速排序代码:C语言选择法排序算法问题。
循环开始遍历数组,选择j(j最初为0)个元素,并分配p=j。
该循环确定i的比例最小的数(j+1到n内),这是一个嵌套循环。
一旦找到a[p]>a[i],那么p=i就是p始终保持的最小值。
内循环结束后,可以得到整个数组的前(n-j)个元素中的最小值a[p],通过交换元素的值就可以得到a[j]。
a[p]和a[j]是第(n-j)个最小值下的数组,在一次循环中,j=j+1去掉前j个数(已经从小到大排序),最小值找到了,并将其放入a[j]中。
当外层循环结束,数组完成时,继续循环下去,排序的总体思路是在第一个循环中找到整个数组中最小的数,并与第一个元素交换,使第一个元素最小。
,在第二个循环中,排除第一个数字并执行上述操作并将其放入第二个元素中,循环这样完成排序