C语言实现八大排序——直接插入排序

简介: 插入排序,又叫直接插入排序。实际中,我们玩扑克牌的时候,就用了插入排序的思想。

插入排序,又叫直接插入排序。实际中,我们玩扑克牌的时候,就用了插入排序的思想。


基本思想:


在待排序的元素中,假设前n-1个元素已有序,现将第n个元素插入到前面已经排好的序列中,使得前n个元素有序。按照此法对所有元素进行插入,直到整个序列有序。



但我们并不能确定待排元素中究竟哪一部分是有序的,所以我们一开始只能认为第一个元素是有序的,依次将其后面的元素插入到这个有序序列中来,直到整个序列有序为止。

代码如下:

//插入排序void InsertSort(int* a, int n){  int i = 0;  for (i = 0; i < n - 1; i++)  {    int end = i;//记录有序序列的最后一个元素的下标    int tmp = a[end + 1];//待插入的元素    while (end >= 0)    {      if (tmp < a[end])//还需继续比较      {        a[end + 1] = a[end];        end--;      }      else//找到应插入的位置      {        break;      }    }    a[end + 1] = tmp;    //代码执行到此位置有两种情况:    //1.待插入元素找到应插入位置(break跳出循环到此)。    //2.待插入元素比当前有序序列中的所有元素都小(while循环结束后到此)。  }}


相关文章
|
4月前
|
编译器 C语言
C语言进阶⑯(自定义类型)项目:静态通讯录,增删查改排序打印。
C语言进阶⑯(自定义类型)项目:静态通讯录,增删查改排序打印。
43 1
|
4月前
|
存储 C语言
Leetcode—— 删除排序数组中的重复项——C语言
Leetcode—— 删除排序数组中的重复项——C语言
|
4月前
|
存储 搜索推荐 算法
C语言数据结构算法,常用10种排序实战
插入排序(Insertion Sort) 希尔排序(Shell Sort) 选择排序(Selection Sort) 冒泡排序(Bubble Sort) 归并排序(Merge Sort) 快速排序(Quick Sort) 堆排序(Heap Sort) 基数排序(Radix Sort)
43 1
C语言数据结构算法,常用10种排序实战
|
4月前
|
算法 搜索推荐 数据处理
C语言中的排序与查找技术详解
C语言中的排序与查找技术详解
42 1
|
4月前
|
C语言
【C语言/数据结构】排序(直接插入排序|希尔排序)
【C语言/数据结构】排序(直接插入排序|希尔排序)
30 4
|
4月前
|
搜索推荐 C语言
【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)
【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)
33 0
|
4月前
|
C语言
【C语言/数据结构】排序(快速排序及多种优化|递归及非递归版本)
【C语言/数据结构】排序(快速排序及多种优化|递归及非递归版本)
38 0
|
4月前
|
C语言
【C语言/数据结构】排序(选择排序,推排序,冒泡排序)
【C语言/数据结构】排序(选择排序,推排序,冒泡排序)
26 0
|
4月前
|
搜索推荐 算法 编译器
【C语言】qsort()函数详解:能给万物排序的神奇函数
【C语言】qsort()函数详解:能给万物排序的神奇函数
123 0
|
4月前
|
算法 搜索推荐 C语言
C语言数据结构之排序整合与比较(冒泡,选择,插入,希尔,堆排序,快排及改良,归并排序,计数排序)
C语言数据结构之排序整合与比较(冒泡,选择,插入,希尔,堆排序,快排及改良,归并排序,计数排序)