排序算法之——插入排序
插入排序思想:将插入的元素记录,与前面的元素进行比较大小,查询到插入的位置,然后再将比它大的元素向后面移动,空出插入的位置,将元素插入。
剩下的和②步骤一样。。。
代码这里给出了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.直接插入排序定义 2.直接插入排序,步骤说明 3.动态图演示 4.代码实现,运行结果 5.算法分析 ① 时间复杂度分析 ② 空 ...
- Java常见排序算法之插入排序
一.概述 本节由小千给大家分享Java常见排序算法之插入排序,之前我们说过排序是算法中的一部分.所以我们学习排序也是算法的入门,为了能让大家感受到排序是算法的一部分,我举个例子证明一下:比如麻将游戏, ...
- 插入排序 php,常用的排序算法(二)--插入排序(PHP实现)
常用的排序算法系列 插入排序 插入排序是一种逻辑上非常好理解的排序方式,整个排序的核心就是不断在当前已经排好部分数据的数组里,找到合适的位置插入新数据.就像抓扑克牌,抓一张,然后再手里已经部分已经排好 ...
- 插入排序算法 java_排序算法实现-插入排序(Java版本)
原标题:排序算法实现-插入排序(Java版本) 插入排序(英语:Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到 ...
- 数据结构与算法:十大排序算法之插入排序
数据结构与算法:十大排序算法之插入排序 package TopTenSortingAlgorithms;import java.util.Arrays; import java.util.Scanne ...
- 【排序算法】插入排序(C语言)
[排序算法]-- 插入排序 目录 一.插入排序的基本思想 二.插入排序的单趟排序 1. 直接插入排序 2. 二分法插入排序 三.插入排序的特点和效率 1. 插入排序的特点 2. 插入排序的效率 一.插 ...
- java语言冒泡排序法_Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等...
本文实现了八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 .快速排序.归并排序.堆排序和LST基数排序 首先是EightAlgorithms.java文件,代码如下: import jav ...
- 【Java】八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序
这篇文章主要介绍了Java如何实现八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 .快速排序.归并排序.堆排序和LST基数排序,需要的朋友可以参考下 本文实现了八个常用的排序算法:插入排序 ...
- java排序算法(插入排序,冒泡排序,选择排序)
java排序算法(插入排序,冒泡排序,选择排序) 先了解原理,然后自己跟着敲一下,加深印象 CMD编译命令:javac -encoding utf-8 SortList.java && ...
- 【算法系列 | 2】深入解析排序算法之——插入排序
序言 你只管努力,其他交给时间,时间会证明一切. 文章标记颜色说明: 黄色:重要标题 红色:用来标记结论 绿色:用来标记一级论点 蓝色:用来标记二级论点 决定开一个算法专栏,希望能帮助大家很好的了解算 ...
最新文章
- 腾讯首位17级研究员/杰出科学家诞生
- IOS开发-GitHub使用详解
- 光速OFFER,为AI奔赴,商汤2022届校招提前批正式启动!
- 【传智播客】JavaWeb程序设计任务教程 第四章练习答案
- linux系统下的“静态库和动态库”专题之一:库的概念和规则
- shell基础05 处理用户输入
- vue防抖和节流是什么_JavaScript防抖与节流,你知道多少?
- php 滑块 爬虫_PHP实现简易爬虫与简易采集程序
- 计算机组成原理—存储系统大纲
- 用DataFormatString格式化GridView 【转】
- android图片 垂直排列,Android图片切换特效示例:水平百叶窗、垂直百叶窗、马赛克...
- 基于SSM的校园帮系统
- Java学习笔记之设计模式(4)适配器模式
- 正说:SAP HANA大裁员
- 2018年世界杯助力优酷重返第一,也成为视频行业的分水岭
- C#中常用对话框类详解
- 过滤微信特殊字符名称
- 掌上单片机实验室 — 激活(4)
- java实现销售预测算法,预测5天销售
- R中常用统计指标含义
热门文章
- 加减乘除html代码vb,VB做加减乘除的代码是什么啊? 或者是怎么做加减乘除 ?...
- 360 自动打开word_Word文档高手的组合键用法,你知道几个?
- 2021葫芦岛市第六高级中学高考成绩查询,葫芦岛高考成绩查询
- python yield 简单用法_python中 yield 的用法 (简单、清晰)
- 跨平台APP JQuery Mobile开发-张晨光-专题视频课程
- linux卸载模块驱动程序,Linux设备驱动程序 之 装载和卸载模块
- react实现汉堡_利用 React 高阶组件实现一个面包屑导航
- 电脑上装蓝牙_指甲盖变触控板,隔空就能操控手机和电脑!
- 阅读“CodeIgniter中国》文档首页》常规主题》安全”之抄录
- 玩转Linux必备知识(一)