C语言

c语言排序的几种算法

时间:2024-10-16 21:45:14 C语言 我要投稿
  • 相关推荐

c语言排序的几种算法

  用C语言总结一下常用排序算法,虽然大多数语言里已经提供了排序算法,比如C函数库中提供了qsort排序函数(内部为快速排序实现),但理解排序算法的思想的意义远远超过了实用的价值。这里我总结了常用的排序算法,并用C语言实现。这些算法的书写顺序也有一定的关联,比如希尔排序是对插入算法的改进,快速排序是对冒泡排序的改进,快速排序和归并排序都用递归实现。

c语言排序的几种算法

  注:每种方法的实现尽量提供了相同的形参列表。这里并没用涉及堆排序,箱排序等算法的实现。

  今天先讲2种排序方式。以后持续跟上。记得注意这几天的排序算法。

  插入排序

  算法概要:插入排序依据遍历到第N个元素的时候前面的N-1个元素已经是排序好的,那么就查找前面的N-1个元素把这第N个元素放在合适的位置,如此下去直到遍历完序列的元素为止。

  Code:

  voidSort(intarray[],intlength)

  {

  intkey;

  for(inti=1; i<length; i++)

  {

  key = array[i];

  for(intj=i-1; j>=0 && array[j] > key; j--)

  {

  array[j+1] = array[j];

  }

  array[j+1] = key;

  }

  }

  希尔排序

  算法概要:shell排序是对插入排序的`一个改装,它每次排序排序根据一个增量获取一个序列,对这这个子序列进行插入排序,然后不断的缩小增量扩大子序列的元素数量,直到增量为1的时候子序列就和原先的待排列序列一样了,此时只需要做少量的比较和移动就可以完成对序列的排序了。

  Code:

  voidshellSort(intarray[],intlength)

  {

  intkey;

  intincrement;

  for(increment = length/2; increment>0; increment /= 2)

  {

  for(inti=increment; i<length; i++)

  {

  key = array[i];

  for(intj = i-increment; j>=0 && array[j] > key; j -= increment)

  {

  array[j+increment] = array[j];

  }

  array[j+increment]=key;

  }

  }

  }

【c语言排序的几种算法】相关文章:

C语言冒泡排序算法实例06-15

C语言选择排序算法及实例代码07-25

C语言插入排序算法及实例代码07-02

C语言中使用快速排序算法对元素排序的实例06-20

C语言实现归并排序算法实例09-18

桶排序算法的理解及C语言版代码示例07-11

C语言经典冒泡排序法09-24

经典c语言冒泡排序法08-08

C语言的冒泡排序方法08-22

C语言中递归算法的剖析08-15