首页 > 其他分享 >1.插入排序—直接插入排序(Straight Insertion Sort)

1.插入排序—直接插入排序(Straight Insertion Sort)

时间:2023-02-06 18:33:27浏览次数:43  
标签:Sort 记录 int 插入排序 元素 插入 有序 Straight


基本思想:

将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。

要点:设立哨兵,作为临时存储和判断数组边界之用。

直接插入排序示例:


1.插入排序—直接插入排序(Straight Insertion Sort)_算法

如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。


算法:



# include <iostream>
# include <cstdio>

using namespace std;

void InsertSort(int a[],int n){

for(int i=1;i<n;i++){//对哨兵进行循环

int x = a[i];//获取哨兵
if(a[i]<a[i-1]){

int j = i-1;//记录当前的最大的元素
a[i] = a[i-1];//先后移一个元素
while(x<a[j] && j>=0){ // 查找在有序表的插入位置
a[j+1] = a[j];
j--; 元素后移
}

a[j+1] = x;//插入正确的位置
}
}

}

int main(){

int a[10]={3,1,5,7,2,4,9,6};

InsertSort(a,8);

for(int i=0;i<8;i++){
printf("%d ",a[i]);
}
printf("\n");

return 0;
}




标签:Sort,记录,int,插入排序,元素,插入,有序,Straight
From: https://blog.51cto.com/u_15955675/6040214

相关文章

  • Hive中Order by和Sort by的区别是什么?
    Hive基于HADOOP来执行分布式程序的,和普通单机程序不同的一个特点就是最终的数据会产生多个子文件,每个reducer节点都会处理partition给自己的那份数据产生结果文件,这导致了在......
  • 算法导论-上课笔记3:快速排序与插入排序
    文章目录​​1快速排序​​​​1.1快速排序的描述​​​​1.2快速排序性能的非形式化分析​​​​1.2.1最坏情况划分​​​​1.2.2最好情况划分​​​​1.2.3平衡的划......
  • js number array sort bug All In One
    jsnumberarraysortbugAllInOnejsarraydefaultsortbug//⚠️sort会改变原始数组arr=[2,-1,-2,0];// [2,-1,-2,0]arr.sort();// [-1,-2,0,......
  • 【算法】插入排序算法原理及实现
    1.什么是插入排序每一步将一个待排序的数据插入到前面已经排序好的有序序列里,直到插完所有的元素为止。插入排序与打扑克牌很类似,你摸到第一张牌的时候是不需要排序的,后续摸......
  • Python3排序sorted(key=lambda)
    Python3排序sorted(key=lambda)简述:假如d是一个由元组构成的列表,我们需要用到参数key,也就是关键词,看下面这句命令,lambda是一个隐函数,是固定写法,不要写成别的单词;x表示列......
  • 768.max-chunks-to-make-sorted-ii 最多能完成排序的块II
    问题描述768.最多能完成排序的块II解题思路可以划分成满足条件的块的充分必要条件是,块内所有元素都小于等于右侧数组中未划分的任一元素。本题中使用了map来进行处理,实......
  • 每日一道思维题——CF1772D - Absolute Sorting
    题意:给定一个长度为n的数组,求出是否存在一个数x使得,由|ai-x|构成的数组bi满足(bi <=bi+1)思路:对于任意两个数a1,a2求|ai-x|有以下几种情况1.x<(a1,a2)/2:  新......
  • POJ 2299 Ultra-QuickSort(树状数组+离散化 或 归并排序求逆序)
    DescriptionInthisproblem,youhavetoanalyzeaparticularsortingalgorithm.Thealgorithmprocessesasequenceofndistinctintegersbyswappingtwoadjace......
  • 【八大数据排序法】插入排序法的图形理解和案例实现 | C++
    第十六章插入排序法:::hljs-center目录第十六章插入排序法●前言●认识算法●一、插入排序法是什么?1.简要介绍2.图形理解3.算法分析●二、案例实现1.......
  • 使用库函数qsort
    先在MSDN上了解一下qsort的大致内容。voidqsort(void*base,size_tnum,size_twidth,int(__cdecl*compare)(constvoid*elem1,constvoid*elem2));第一个......