C++简单插入排序算法
插入排序把整个待排序序列分成了两个部分,即已排序部分和未排序部分,每次都从未排序部分取第一个元素插入到已排序部分。
对于一个连续的数组序列,不妨让数组第一个位置的元素为已排序元素,从1开始进行插入排序,用一个变量j指向该需要进行插入排序的元素的位置,用一个变量temp来临时存储需要进行插入排序的元素即[0,j-1]都是已排序元素。
步骤1:从j-1开始从后往前查找合适插入的位置,此时的j位置相当于一个空位置。
步骤2:如果temp < j-1位置元素,就将j-1这个位置的元素移到j这个空位置,并将空位置更新为j-1,即j=j-1
步骤3:重复步骤1,2,直到j到达已排序序列的最前端或找到j-1的位置使得temp > 这个位置的元素,然后将temp插入到j位置。
#include<cstdio>
#include<iostream>
using namespace std;
void insertSort(int array[],int length){
for(int i = 1;i < length;i++){
int temp = array[i]; //存储当前需要插入的元素
int j = i;
//从当前需要进行插入排序的这个元素的这个位置开始,每次都将这个元素与j的前一个位置的元素进行比较
//如果小于它,则将j前一个位置的元素移到j的位置,再把j向前移动一个位置
//此时j位置相当于一个空位置,就是最终需要进行插入的位置
while(j>0 && temp < array[j-1]){
array[j] = array[j-1];
j--;
}
array[j] = temp;
}
}
int main(){
int array[] = {2,3,4,5,1,65,22};
int length = sizeof(array)/sizeof(int);
insertSort(array,length);
for(int i =0; i< 7;i ++){
printf("%d ",array[i]);
}
printf("\n");
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理