您的位置:首页 > 理论基础 > 数据结构算法

考研数据结构--直接插入排序算法讲解

2019-10-09 23:56 232 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_42290506/article/details/102472398

直接插入排序算法

代码如下:

#include<iostream>
using namespace std;

//A[0]用做哨兵,不存储需要排序的数据,算法对A[1]到A[len - 1]的数据进行排序
void InsertSort(int A[], int len){
int i, j;
//从A[2]开始进行插入
for(i = 2; i < len; i++){
//当待排序元素大于它前一个元素时需要把待排序元素往前移
if(A[i] < A[i - 1]){
//哨兵保存待排序元素的值
A[0] = A[i];
//把待排序元素的前一个元素后移一个位置
A[i] = A[i - 1];
//将待排序元素与它再往前的元素比较,若待排序元素小则那个前面的元素后移一个位置然后继续这个过程直到出现待排序元素大于或等于那个前面的元素或前面没有元素停止
for(j = i - 2; A[0] < A[j]; j--){
A[j + 1] = A[j];
}
//比较的过程中第一个小于等于待排序元素的元素后面放置待排序元素
A[j + 1] = A[0];
}
}
}

int main(){
int A[] = {0,9,5,6,3,1,5,4};
int len = sizeof(A) / sizeof(int);
for(int i = 1; i < len; i++){
cout<<A[i]<<endl;
}
cout<<endl;
InsertSort(A, len);
for(int i = 1; i < len; i++){
cout<<A[i]<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: