直接插入排序(初级版)之C++实现
直接插入排序(初级版)之C++实现
一、源代码:InsertSortLow.cpp
- /*直接插入排序思想:
- 假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成1个有序区,无序区为R[2..n]。
- 从i=2起直至i=n为止,依次将R[i]插入当前的有序区R[1..i-1]中,生成含n个记录的有序区。
- */
- #include<iostream>
- using namespace std;
- /*定义输出一维数组的函数*/
- void print(int array[], int n)
- {
- for (int i = ; i < n; i++)
- {
- cout << array[i] << " ";
- }
- cout << endl;
- }
- /*
- 首先在当前有序区R[1..i-1]中查找R[i]的正确插入位置k(1≤k≤i-1);
- 然后将R[k..i-1]中的记录均后移一个位置,腾出k位置上的空间插入R[i]。
- 注意:
- 若R[i]的关键字大于等于R[1..i-1]中所有记录的关键字,则R[i]就是插入原位置。
- */
- int insertSort(int array[], int n)
- {
- //定义变量,记录交换次数
- int count = ;
- //定义中间变量,做为临时交换变量
- int temp;
- int j;
- //遍历数组(进行排序)
- cout << "开始对数组进行排序了..." << endl;
- for (int i = ; i < n; i++)
- {
- //当左边元素大于右边元素时
- if (array[i] < array[i - ])
- {
- //将当前的数组元素存储到临时变量中
- temp = array[i];
- //将从i位置(比temp大的元素)开始的数组元素整体后移
- for (j = i - ; j >= && array[j]>temp; j--)
- {
- cout << "第" << (i + ) << "趟第" << (j + ) << "次排序" << endl;
- //将数组中的元素整体后移一个单位
- array[j + ] = array[j];
- cout << array[j] << "和" << array[j + ] << "互换了" << endl;
- //输出此时数组的顺序
- cout << "数组此时的顺序是:";
- print(array, );
- //每交换一次,记录数加1
- count++;
- }
- array[j + ] = temp;
- }
- }
- cout << "数组排序结束了..." << endl;
- return count;
- }
- int main()
- {
- //定义待排序的一维数组
- int array[] = { , , , , , , , , , };
- //输出原始数组
- cout << "原始数组是:" << endl;
- print(array, );
- //对数组进行排序
- int count = insertSort(array, );
- //输出排序后的数组
- cout << "排序后的数组是:" << endl;
- print(array, );
- cout << "共交换" << count << "次" << endl;
- return ;
- }
二、运行效果
直接插入排序(初级版)之C++实现的更多相关文章
- 希尔排序之C++实现(初级版)
希尔排序之C++实现(初级版) 一.源代码:希尔排序之C++实现(初级版) /*希尔排序基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组. 所有距离为d1的倍数的记录放在同一个 ...
- [osg][osgEarth][原]基于OE自定义自由飞行漫游器(初级版)
由于受够了OE的漫游器,想搞个可以在全球飞行的漫游器,所以就做了一个: 请无视我的起名规则······ 类头文件:EarthWalkManipulator.h #pragma once //南水之源 ...
- 冒泡排序(初级版)之C++实现
冒泡排序(初级版)之C++实现 一.源代码:BubbleSortLow.cpp /*冒泡排序思想: 从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面: 一轮比 ...
- 02 初级版web框架
02 初级版web框架 服务器server端python程序(初级版): import socket server=socket.socket() server.bind(("127.0.0 ...
- 插入排序Java版
package dataStructureAlgorithmReview.day01; import java.util.Arrays; /** * 插入排序 * @author shundong * ...
- day 29 socket 初级版
# 客户端介绍简单版# import socket# #1买手机# phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #SOCK_STR ...
- github 使用教程初级版
github 是一个基于 git 的代码托管平台,付费用户可以建私人仓库,免费用户只能使用公共仓库.对于一般人来说公共仓库就已经足够了,而且也没多少代码来管理.下面简单介绍如何使用 github,供初 ...
- angular+bootstrap+MVC 之三,分页控件初级版
今天实现一个分页控件,效果如下: 1.HTML: <!doctype html> <!--suppress ALL --> <html ng-app="appT ...
- Mysql对用户操作加审计功能——初级版
在某些应用里,需要知道谁对表进行了操作,进行了什么操作,所为责任的追朔.在MYSQL里,可以使用触发器实现. 1:创建测试表 mysql> create table A(a int);Query ...
随机推荐
- 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 - ...
- 37、使用FileInputStream和FileOutputStream读取和写入
绝对路径和相对路径 绝对路径:指文件在硬盘上真正存在的路径,比如:D:\Java\HelloWorld.java,这个指的是在电脑的d盘下的Java文件夹里面有个HelloWorld.java文件 相 ...
- 基于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 ...
- Linux路径名和文件名最大长度限制
UNIX标准对路径名和文件名最大长度限制做出了说明,但其上限值在实际应用长过小,Linux在具体实现时提升了该上限,该限制在Linux的 /usr/include/linux/limits.h 中做出 ...
- 一个简单的爆破 mysql 远程连接脚本(perl6)
sub MAIN(Str $host) { use DBIish; my $file = open 'password.txt'; while $file.get -> $line { my $ ...
- 64_t7
texlive-ulqda-bin-svn13663.0-33.20160520.fc26.2..> 24-May-2017 15:57 33102 texlive-ulqda-doc-svn2 ...
- python网络编程-paramiko
python基础学习日志day8-paramiko 一:简介 Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 现有这样的需求:需要使用windows客户端,远程连 ...
- Win10搜索不能用
使用win10进行搜索时,一直显示win10特色的滚动条,但就是检索不出东西,我的主要是检索不到windows的内容: (个人感觉使用win10检索网页内容不太专业,就关闭了Web搜索) 最后有发现网 ...
- JQuery怎么实现页面左侧菜单刷新后保留鼠标点击addclass的样式?
$('ul.main-menu li a').each(function(){ if($($(this))[0].href==String(window.location)) $(this).pare ...
- java基础73 dom4j修改xml里面的内容(网页知识)
1.DOM4J对XML文件进行增删改操作 实现代码 package com.shore.code; import java.io.File; import java.io.FileOutputStre ...