首页 > 其他分享 >数据结构之 插入排序

数据结构之 插入排序

时间:2022-12-16 23:02:23浏览次数:58  
标签:数据结构 int 插入排序 元素 算法 array 排序



插入排序:

  包括:

​直接插入排序​​,二分插入排序(又称折半插入排序),链表插入排序,

​希尔排序​​(又称缩小增量排序)。


插入排序算法思路


假定这个​​数组​​的序是排好的,然后从头往后,如果有数比当前外层元素的值大,则将这个数的位置往后挪,直到当前外层元素的值大于或等于它前面的位置为止.这具算法在排完前k个数之后,可以保证a[1…k]是局部有序的,保证了插入过程的正确性.

算法描述

  一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:

  1. 从第一个元素开始,该元素可以认为已经被排序

  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描

  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置

  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置

  5. 将新元素插入到下一位置中

  6. 重复步骤2

  如果比较操作的代价比交换操作大的话,可以采用

​二分查找​​法来减少比较操作的数目。该算法可以认为是插入排序的一个变种,称为二分查找排序。




​编辑本段​​算法实现




#include <stdio.h>

int array[] = {4,2,3,7,5};

static void insert_sort(int array[], int len);

static void insert_sort(int array[], int len)
{
int key;
int i,j;
for(j = 1; j < len; j++){
i = j - 1;
key = array[j];
while(array[i] > key && i >= 0) {
array[i + 1] = array[i];
i--;
}
array[i+1] = key;
}
}
int main(int argc, char *argv[])
{
insert_sort(array);
}





reference to 




标签:数据结构,int,插入排序,元素,算法,array,排序
From: https://blog.51cto.com/u_15747257/5948821

相关文章

  • 深入理解Linux网络技术内幕 关键数据结构
    关键数据结构1.sk_bufsk_buf{ 布局字段 通用字段 功能专用字段 管理函数}1.1布局字段内核为了方便搜寻和组织数据结构,使用了双向链表来维护所有的sk_buf结构,但......
  • C语言《数据结构》课程设计任务书
    C语言《数据结构》课程设计任务书1.个人薪资管理系统[基本功能]1)个人工号及薪资使用线性表实现数据存储;2)可实现个人薪资信息的输入、修改、删除功能;3)能够对数据按......
  • openharmony 军棋开发带你了解如何选择数据结构
    openharmony军棋开发带你了解如何选择数据结构一,引言数据结构不只是用于组织数据,它还极大地影响着代码的运行速度。因为数据结构不同,程序的运行速度可能相差多个数量级。......
  • 寡人的难题 - 2021算法与数据结构实验题
    算法与数据结构实验题10.23寡人的难题题目内容★实验任务寡人心系天下为国为民,想要在历史中留下点痕迹,就必须要让国家强盛起来,正所谓想致富先修路,寡人觉得去修路,那些......
  • 一个开源的个人学习计算机科学知识成长记录(前后端,数据结构与算法)
    菜鸟进阶​​一个适合自学与巩固的学习记录​​​​前端项目积累​​​​前端入门​​​​HTML​​​​CSS​​​​JavaScript​​​​Browser​​​​Node​​​​DOM​​......
  • 数据结构杂题选做
    好像数据结构也没什么专项,那就全塞一起吧(大雾好像wind_whisper神仙今天留的题也没什么专项。P1972[SDOI2009]HH的项链居然没做过的“经典题”++。怎么到处都是经典题......
  • 分智慧果 - 2021算法与数据结构实验题
    算法与数据结构实验题8.19分智慧果题目内容★实验任务老师准备把一筐智慧果分给班上的同学,第i个同学(从1开始编号)分到\(a_i\)个智慧果。Bonez(编号为1)是个自私的......
  • 【数据结构实践】从0到1带你利用Python实现自定义集合
    前言集合(简称集)是数学中一个基本概念,我们应该都比较熟悉,不管是生活中,还是数学上,我们都频繁地接触到。集合在数学领域具有无可比拟的特殊重要性。一定范围的,确定的,可以......
  • 【数据结构实践】手把手带你实现 Python 自定义数组
    引言无论是任何语言,数组或者类似数组的数据结构永远是计算机编程语言不可或缺的基本数据结构,有了数组的存在更有利于我们的程序对数据的存储和操作.本文将从面向对象的入手......
  • 数据结构学习笔记 第一章
    一、为什么要写博客?前段时间听过一个在学术界卓有成就的学长谈他的学习、科研经验,他讲到“很多学生往往只重视学习或者科研的成果,却忽视了学习的过程······对于......