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

直接插入排序(初级版)之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 = 0; 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 = 0;
27     //定义中间变量,做为临时交换变量
28     int temp;
29     int j;
30     //遍历数组(进行排序)
31     cout << "开始对数组进行排序了..." << endl;
32     for (int i = 1; i < n; i++)
33     {
34         //当左边元素大于右边元素时
35         if (array[i] < array[i - 1])
36         {
37             //将当前的数组元素存储到临时变量中
38             temp = array[i];
39             //将从i位置(比temp大的元素)开始的数组元素整体后移
40             for (j = i - 1; j >= 0 && array[j]>temp; j--)
41             {
42                 cout << "第" << (i + 1) << "趟第" << (j + 1) << "次排序" << endl;
43                 //将数组中的元素整体后移一个单位
44                 array[j + 1] = array[j];
45                 cout << array[j] << "和" << array[j + 1] << "互换了" << endl;
46                 //输出此时数组的顺序
47                 cout << "数组此时的顺序是:";
48                 print(array, 10);
49                 //每交换一次,记录数加1
50                 count++;
51             }
52             array[j + 1] = temp;
53         }
54     }
55     cout << "数组排序结束了..." << endl;
56     return count;
57 }
58
59 int main()
60 {
61     //定义待排序的一维数组
62     int array[] = { 1, 3, 4, 5, 2, 6, 10, 9, 8, 7 };
63     //输出原始数组
64     cout << "原始数组是:" << endl;
65     print(array, 10);
66     //对数组进行排序
67     int count = insertSort(array, 10);
68     //输出排序后的数组
69     cout << "排序后的数组是:" << endl;
70     print(array, 10);
71     cout << "共交换" << count << "次" << endl;
72     return 0;
73 }

二、运行效果

时间: 2024-11-05 14:48:51

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

Spring IOC原理(初级版)

Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务器端的开发.从简单性.可测试性和松耦合性的角度而言,绝大部分Java应用都可以从Spring中受益. ------------------------------------------------------------↑ 以上都是废话,我也不懂 ↑   ↓ 下面是整体架构,可以略过 ↓ ----------------------

java集合框架小结(初级版)

今天大概的整理了一下java集合框架,在这里做一个小结,方便以后查阅,本博文主要参考资料为<java编程思想第四版>第11章——持有对象以及JAVA 1.6 API文档.并没有研究更深入的第17章<容器深入研究>.大概介绍了集合框架中几个比较常用的集合类. 以下为正文. 首先来看一张图,不太会用visio,画的可能不太好看 图中将接口.抽象类.实现类.淘汰类(圆角矩形)进行标注.有直线连接的类(或接口)表示是子类关系或者实现关系 由图示可以看出,集合类主要有两个集合接口: 1.Co

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

冒泡排序(初级版)之C++实现 一.源代码:BubbleSortLow.cpp 1 /*冒泡排序思想: 2 从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面: 3 一轮比较完毕,一个最大的数沉底成为数组中的最后一个元素,一些较小的数如同气泡一样上浮一个位置. 4 n个数,经过n-1轮比较后完成排序. 5 */ 6 #include<iostream> 7 using namespace std; 8 9 /*定义输出一维数组的函数*/ 10 void

逗比之——程序员装逼手册1(初级版)

一.准备工作 "工欲善其事必先利其器." 1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好.一个用来查资料,一个用来写代码.总之要显得信息量很大,效率很高. 2.椅子不一定要舒服,但是一定要可以半躺着. 3.大量的便签,各种的颜色的,用来记录每天要完成的事务,多多益善.沿着电脑屏幕的边框,尽量贴满,显出有很多事情的样子. 4.工具书,orelly的,机械工业,电子工业什么的都可以,能英文就英文,不行影印版的也可以,反正越厚越好,而且千万不要放在书架上,一定要堆

【github】github 使用教程初级版

github 是一个基于 git 的代码托管平台,付费用户可以建私人仓库,免费用户只能使用公共仓库.对于一般人来说公共仓库就已经足够了,而且也没多少代码来管理.下面简单介绍如何使用 github,供初学者参考. 一.建立仓库 点击右上角加号,选择 New repository,如图所示: 然后填写仓库名称,选上 Initialize this repository with a README,这个意思是在建立仓库时自动生成 README.md 文件,最后 Create repository,如图

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

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

学籍管理系统(Java初级版)

import java.util.Scanner; /**  * 学籍管理系统  * @author Tanker  * @version 4.6.0  */  public class XueJiSystem {     //Java 入口 public static void main(String[] args) {      Scanner sc=new Scanner(System.in); //控制台输入 System.out.println("欢迎来到本学籍管理系统!")

IIS接收浏览器请求报文并将请求报文转给asp.net框架的过程(初级版)

网站的页面大致分为两类: 一.静态页面 二.动态页面 所谓的静态页面与动态页面,并不是依据页面内容的动与静来加以区分的,而是看服务器对页面的处理方式来判断的. 通过浏览器访问服务器上的一个html页面,IIS服务器接收到来自浏览器的http请求,判断请求的页面类型,发现是html文件,IIS直接读取硬盘里的html文件 返回给浏览器,浏览器拿到页面后直接渲染展示. 通过浏览器访问服务器上的一个.ashx或者.aspx后缀的页面时,IIS服务器接收到来自浏览器的http请求,发现后缀是.ashx或

初级版迷宫问题(栈的应用)

  /*  (一)初级迷宫问题:   0:代表通   1:代表不通   求迷宫的通路  (二)步骤:   1.创建迷宫      * 从文件中读取迷宫      * 开辟二维数组存放迷宫   2.寻找通路      * 检查某位置是否为通      * 出口位置判断      * 走过的路用2标记      * 利用栈回溯  (三)问题   1.解决回溯中重复探测:递归   2.最优解:迷宫的最短通路 */ #include <iostream> #include <stdlib.h&g