插入排序思想:将插入的元素记录,与前面的元素进行比较大小,查询到插入的位置,然后再将比它大的元素向后面移动,空出插入的位置,将元素插入。

剩下的和②步骤一样。。。

代码这里给出了3种,从基础到优化

//1
void InsertSort(int* a, int n)
{for (int i = 1; i < n; ++i){if (a[i] < a[i - 1]){int temp = a[i];for (int j = 0; j < i; ++j){if (temp < a[j]){for (int k = i; k > j; k--)a[k] = a[k - 1];a[j] = temp;break;}}}}
}

//2
void InsertSort(int* a, int n)
{int i, j;for ( i = 1; i < n; i++){if (a[i] < a[i - 1]){int temp = a[i];for (j = i; j >= 0 && a[j-1] > temp; j--){a[j] = a[j - 1];}a[j] = temp;}}
}

//3void InsertSort(int* a, int n)
{int temp;for (int i = 1; i < n; i++){int low = 0, high = i - 1;temp = a[i];while (low <= high){int mid = (low + high) / 2;if (temp < a[mid])high = mid - 1;elselow = mid + 1;}for (int j = i; j > low; --j){a[j] = a[j - 1];}a[low] = temp;}
}

主方法:

int main()
{int arr[] = { 9,2,3,1,5,4,7,8,6 };int n = sizeof(arr) / sizeof(int);InsertSort(arr, n); //插入排序for (int i = 0; i < n; i++){cout << arr[i] << " ";}cout << endl;return 0;
}

转载于:https://www.cnblogs.com/single-dont/p/11354265.html

排序算法之——插入排序相关推荐

  1. 排序算法 | 直接插入排序算法的图解、实现、复杂度和稳定性分析

    排序算法 | 直接插入排序算法的图解.实现.复杂度和稳定性分析 目录 1.直接插入排序定义 2.直接插入排序,步骤说明 3.动态图演示 4.代码实现,运行结果 5.算法分析 ① 时间复杂度分析 ② 空 ...

  2. Java常见排序算法之插入排序

    一.概述 本节由小千给大家分享Java常见排序算法之插入排序,之前我们说过排序是算法中的一部分.所以我们学习排序也是算法的入门,为了能让大家感受到排序是算法的一部分,我举个例子证明一下:比如麻将游戏, ...

  3. 插入排序 php,常用的排序算法(二)--插入排序(PHP实现)

    常用的排序算法系列 插入排序 插入排序是一种逻辑上非常好理解的排序方式,整个排序的核心就是不断在当前已经排好部分数据的数组里,找到合适的位置插入新数据.就像抓扑克牌,抓一张,然后再手里已经部分已经排好 ...

  4. 插入排序算法 java_排序算法实现-插入排序(Java版本)

    原标题:排序算法实现-插入排序(Java版本) 插入排序(英语:Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到 ...

  5. 数据结构与算法:十大排序算法之插入排序

    数据结构与算法:十大排序算法之插入排序 package TopTenSortingAlgorithms;import java.util.Arrays; import java.util.Scanne ...

  6. 【排序算法】插入排序(C语言)

    [排序算法]-- 插入排序 目录 一.插入排序的基本思想 二.插入排序的单趟排序 1. 直接插入排序 2. 二分法插入排序 三.插入排序的特点和效率 1. 插入排序的特点 2. 插入排序的效率 一.插 ...

  7. java语言冒泡排序法_Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等...

    本文实现了八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 .快速排序.归并排序.堆排序和LST基数排序 首先是EightAlgorithms.java文件,代码如下: import jav ...

  8. 【Java】八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序

    这篇文章主要介绍了Java如何实现八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 .快速排序.归并排序.堆排序和LST基数排序,需要的朋友可以参考下 本文实现了八个常用的排序算法:插入排序 ...

  9. java排序算法(插入排序,冒泡排序,选择排序)

    java排序算法(插入排序,冒泡排序,选择排序) 先了解原理,然后自己跟着敲一下,加深印象 CMD编译命令:javac -encoding utf-8 SortList.java && ...

  10. 【算法系列 | 2】深入解析排序算法之——插入排序

    序言 你只管努力,其他交给时间,时间会证明一切. 文章标记颜色说明: 黄色:重要标题 红色:用来标记结论 绿色:用来标记一级论点 蓝色:用来标记二级论点 决定开一个算法专栏,希望能帮助大家很好的了解算 ...

最新文章

  1. 腾讯首位17级研究员/杰出科学家诞生
  2. IOS开发-GitHub使用详解
  3. 光速OFFER,为AI奔赴,商汤2022届校招提前批正式启动!
  4. 【传智播客】JavaWeb程序设计任务教程 第四章练习答案
  5. linux系统下的“静态库和动态库”专题之一:库的概念和规则
  6. shell基础05 处理用户输入
  7. vue防抖和节流是什么_JavaScript防抖与节流,你知道多少?
  8. php 滑块 爬虫_PHP实现简易爬虫与简易采集程序
  9. 计算机组成原理—存储系统大纲
  10. 用DataFormatString格式化GridView 【转】
  11. android图片 垂直排列,Android图片切换特效示例:水平百叶窗、垂直百叶窗、马赛克...
  12. 基于SSM的校园帮系统
  13. Java学习笔记之设计模式(4)适配器模式
  14. 正说:SAP HANA大裁员
  15. 2018年世界杯助力优酷重返第一,也成为视频行业的分水岭
  16. C#中常用对话框类详解
  17. 过滤微信特殊字符名称
  18. 掌上单片机实验室 — 激活(4)
  19. java实现销售预测算法,预测5天销售
  20. R中常用统计指标含义

热门文章

  1. 加减乘除html代码vb,VB做加减乘除的代码是什么啊? 或者是怎么做加减乘除 ?...
  2. 360 自动打开word_Word文档高手的组合键用法,你知道几个?
  3. 2021葫芦岛市第六高级中学高考成绩查询,葫芦岛高考成绩查询
  4. python yield 简单用法_python中 yield 的用法 (简单、清晰)
  5. 跨平台APP JQuery Mobile开发-张晨光-专题视频课程
  6. linux卸载模块驱动程序,Linux设备驱动程序 之 装载和卸载模块
  7. react实现汉堡_利用 React 高阶组件实现一个面包屑导航
  8. 电脑上装蓝牙_指甲盖变触控板,隔空就能操控手机和电脑!
  9. 阅读“CodeIgniter中国》文档首页》常规主题》安全”之抄录
  10. 玩转Linux必备知识(一)