C++插入排序

开发工具与关键技术: Visual Studio / C++
作者:何文涛
撰写时间:2019-8-05

插入排序也是C/C++里面的排序的一种排序算法,其排序速度比冒泡要快。

下面就是插入排序的代码展示,展示一个正序排序。
#define MAX 10
首先定义一个宏定义MXA 值为10,作为排序用到的数字。
//交换函数
void Swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
这个交换函数的方法作为下面排序时遇到需要把插入到另外的一个位置的时候用到。
//输出
void PrintArray(int arr[], int length)
{
for (int i = 0; i < length; i++)
{
cout << arr[i] << ends;
}
cout << endl;
}
这个函数是作为输出数组时候用到的,参数为一个数组和一个int类型的length作为数组的长度,里面通过for循环逐个的把数组里面的元素进行输出。
//插入排序
void InsertSort(int arr[], int length)
{
int j;
for (int i = 0; i < length; i++)
{
if (arr[i] < arr[i - 1])
{
int temp = arr[i];
for (j = i - 1; j >= 0 && temp < arr[j]; j–)
{
arr[j + 1] = arr[j];
}
arr[j + 1] = temp;
}
}
}
插入排序函数两个参数分别是数组以及数组长度。
第一部分主循环以长度作为结束, i作为下标并自增逐个把数组遍历完
第二部分是比较大小,比较下标i以及i前面的元素如果成立则就是前面的元素比后面的大需要进行下面操作。
第三部分是进行元素的互换,首先前面的if条件成立的话才能进来运行第三部分否则继续往下循环,首先把下标i的元素给了临时变量temp,然后进行循环,j等于i前面的那个元素也就是比i要大的元素并且i要小于j,否则继续进行循环然后j–。
第四部分,把j赋值给j+1,也就是j就是比i要大的元素,把它赋值给j后面,然后再循环j–直到把前面所有的元素都遍历完后跳出循环,这时j+1是个空,就直接把temp赋值给j+1的下标,完成排序。

Main主函数:
void main()
{
int arr[MAX];
srand((unsigned int)time(NULL));
for (int i = 0; i < MAX; i++)
{
arr[i] = rand() % MAX;
}
PrintArray(arr, MAX); //调用输出函数
InsertSort(arr, MAX); //调用排序函数
PrintArray(arr, MAX); //调用输出函数
}
首先声明了一个整型的arr数组长度为宏定义MAX也就是10,调用函数srand来使得每次随机生成的值是不一样。
通过for循环来逐个把数组里面的元素输出,函数调用:首先调用输出未排序好的数组,在调用排序函数,再调用已经排序好的数组。

运行排序结果:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值