直接插入排序(初级版)之C++实现

一、源代码:InsertSortLow.cpp

  1. /*直接插入排序思想:
  2.  假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成1个有序区,无序区为R[2..n]。
  3. 从i=2起直至i=n为止,依次将R[i]插入当前的有序区R[1..i-1]中,生成含n个记录的有序区。
  4. */
  5.  
  6. #include<iostream>
  7. using namespace std;
  8. /*定义输出一维数组的函数*/
  9. void print(int array[], int n)
  10. {
  11. for (int i = ; i < n; i++)
  12. {
  13. cout << array[i] << " ";
  14. }
  15. cout << endl;
  16. }
  17. /*
  18. 首先在当前有序区R[1..i-1]中查找R[i]的正确插入位置k(1≤k≤i-1);
  19. 然后将R[k..i-1]中的记录均后移一个位置,腾出k位置上的空间插入R[i]。
  20. 注意:
  21.  若R[i]的关键字大于等于R[1..i-1]中所有记录的关键字,则R[i]就是插入原位置。
  22. */
  23. int insertSort(int array[], int n)
  24. {
  25. //定义变量,记录交换次数
  26. int count = ;
  27. //定义中间变量,做为临时交换变量
  28. int temp;
  29. int j;
  30. //遍历数组(进行排序)
  31. cout << "开始对数组进行排序了..." << endl;
  32. for (int i = ; i < n; i++)
  33. {
  34. //当左边元素大于右边元素时
  35. if (array[i] < array[i - ])
  36. {
  37. //将当前的数组元素存储到临时变量中
  38. temp = array[i];
  39. //将从i位置(比temp大的元素)开始的数组元素整体后移
  40. for (j = i - ; j >= && array[j]>temp; j--)
  41. {
  42. cout << "第" << (i + ) << "趟第" << (j + ) << "次排序" << endl;
  43. //将数组中的元素整体后移一个单位
  44. array[j + ] = array[j];
  45. cout << array[j] << "和" << array[j + ] << "互换了" << endl;
  46. //输出此时数组的顺序
  47. cout << "数组此时的顺序是:";
  48. print(array, );
  49. //每交换一次,记录数加1
  50. count++;
  51. }
  52. array[j + ] = temp;
  53. }
  54. }
  55. cout << "数组排序结束了..." << endl;
  56. return count;
  57. }
  58.  
  59. int main()
  60. {
  61. //定义待排序的一维数组
  62. int array[] = { , , , , , , , , , };
  63. //输出原始数组
  64. cout << "原始数组是:" << endl;
  65. print(array, );
  66. //对数组进行排序
  67. int count = insertSort(array, );
  68. //输出排序后的数组
  69. cout << "排序后的数组是:" << endl;
  70. print(array, );
  71. cout << "共交换" << count << "次" << endl;
  72. return ;
  73. }

二、运行效果

直接插入排序(初级版)之C++实现的更多相关文章

  1. 希尔排序之C++实现(初级版)

    希尔排序之C++实现(初级版) 一.源代码:希尔排序之C++实现(初级版) /*希尔排序基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组. 所有距离为d1的倍数的记录放在同一个 ...

  2. [osg][osgEarth][原]基于OE自定义自由飞行漫游器(初级版)

    由于受够了OE的漫游器,想搞个可以在全球飞行的漫游器,所以就做了一个: 请无视我的起名规则······ 类头文件:EarthWalkManipulator.h #pragma once //南水之源 ...

  3. 冒泡排序(初级版)之C++实现

    冒泡排序(初级版)之C++实现 一.源代码:BubbleSortLow.cpp /*冒泡排序思想: 从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面: 一轮比 ...

  4. 02 初级版web框架

    02 初级版web框架 服务器server端python程序(初级版): import socket server=socket.socket() server.bind(("127.0.0 ...

  5. 插入排序Java版

    package dataStructureAlgorithmReview.day01; import java.util.Arrays; /** * 插入排序 * @author shundong * ...

  6. day 29 socket 初级版

    # 客户端介绍简单版# import socket# #1买手机# phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #SOCK_STR ...

  7. github 使用教程初级版

    github 是一个基于 git 的代码托管平台,付费用户可以建私人仓库,免费用户只能使用公共仓库.对于一般人来说公共仓库就已经足够了,而且也没多少代码来管理.下面简单介绍如何使用 github,供初 ...

  8. angular+bootstrap+MVC 之三,分页控件初级版

    今天实现一个分页控件,效果如下: 1.HTML: <!doctype html> <!--suppress ALL --> <html ng-app="appT ...

  9. Mysql对用户操作加审计功能——初级版

    在某些应用里,需要知道谁对表进行了操作,进行了什么操作,所为责任的追朔.在MYSQL里,可以使用触发器实现. 1:创建测试表 mysql> create table A(a int);Query ...

随机推荐

  1. Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A

    问题: 当我们打开数据库,即use dbname时,要预读数据库信息,当使用-A参数时,就不预读数据库信息. 解决方法:mysql -hhostname -uusername -ppassword - ...

  2. 37、使用FileInputStream和FileOutputStream读取和写入

    绝对路径和相对路径 绝对路径:指文件在硬盘上真正存在的路径,比如:D:\Java\HelloWorld.java,这个指的是在电脑的d盘下的Java文件夹里面有个HelloWorld.java文件 相 ...

  3. 基于Ubuntu搭建GMS测试环境

    一.版本信息: 系统版本:Ubuntu 18.04.2 LTS JDK版本: 1.8.0_171 SDK版本:android-sdk_r24.4.1-linux.tgz ADB版本:1.0.40 ap ...

  4. Linux路径名和文件名最大长度限制

    UNIX标准对路径名和文件名最大长度限制做出了说明,但其上限值在实际应用长过小,Linux在具体实现时提升了该上限,该限制在Linux的 /usr/include/linux/limits.h 中做出 ...

  5. 一个简单的爆破 mysql 远程连接脚本(perl6)

    sub MAIN(Str $host) { use DBIish; my $file = open 'password.txt'; while $file.get -> $line { my $ ...

  6. 64_t7

    texlive-ulqda-bin-svn13663.0-33.20160520.fc26.2..> 24-May-2017 15:57 33102 texlive-ulqda-doc-svn2 ...

  7. python网络编程-paramiko

    python基础学习日志day8-paramiko 一:简介 Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 现有这样的需求:需要使用windows客户端,远程连 ...

  8. Win10搜索不能用

    使用win10进行搜索时,一直显示win10特色的滚动条,但就是检索不出东西,我的主要是检索不到windows的内容: (个人感觉使用win10检索网页内容不太专业,就关闭了Web搜索) 最后有发现网 ...

  9. JQuery怎么实现页面左侧菜单刷新后保留鼠标点击addclass的样式?

    $('ul.main-menu li a').each(function(){ if($($(this))[0].href==String(window.location)) $(this).pare ...

  10. java基础73 dom4j修改xml里面的内容(网页知识)

    1.DOM4J对XML文件进行增删改操作 实现代码 package com.shore.code; import java.io.File; import java.io.FileOutputStre ...