昨天太忙了就忘记了发这一篇文章了,所以今天赶紧的补上了这一章
今天要写的是插入排序,老规矩,我们先讲一下什么是
插入排序?
每次从没有排序的数据列表中取出第一个元素,把它插入到有序表的合适位置, 使有序表仍然有序。
演示图这张图就是小编画的一张图,虽然简陋,但是我们还是很容易的了解插入排序的原理,其实也很简单,就是我们讲后面小的数据往前面排,将大的数据向后挤,就是所谓的插入排序了,多跑几次数据,就能将所有的数据排完
分析:
1.每次排序将有序列表选择性向右排序
2.确定插入数据的位置
我们做一个循环,假如后位的数据小于前位的数据,则我们后位的数据是需要往前排序的,这个是很简单做到的,然后就是我们需要将已经排好了序的数据,向后移动,这个移动也是需要判断的,当移动到,比后位数据小的时候就不需要移动了,然后将这个后位数据插入到有序列表里面去,我们就完成了一次的插入排序,等这个循环结束,我们就可以将所有的数据排好
#include<iostream>
using namespace std;
void print(int a[], int n) {
for (int j = 0; j < n; j++) {
cout << a[j] << " ";
}
cout << endl;
return;
}
void insert_Sort(int array[], int n) {
for (int i = 1; i < n; i++) {
if (array[i]/*后位*/ < array[i - 1]/*前位*/) {
int temp = array[i]/*后位*/;
int k/*前位*/ = i - 1;
for (int j = k; j >= 0 && temp < array[j]; j--) {
array[j + 1] = array[j];
k--;
print(array, 8);
}
array[k + 1] = temp;//插入第i位的值
}
}
}
int main() {
int a[8] = { 3,1,5,7,2,4,9,6 };
cout << "初始值:";
for (int j = 0; j < 8; j++) {
cout << a[j] << " ";
}
cout << endl << endl;
insert_Sort(a, 8);
cout << "排序后:";
print(a, 8);
return 0;
}
下一个排序,马上就来了哦
请支持我,每天更新不同的算法!
谢谢你们的支持!
网友评论