首页 > 其他分享 >插入排序

插入排序

时间:2023-10-13 11:11:59浏览次数:26  
标签:int 插入排序 元素 有序 print 排序

原数组为915623

 

 1 void print(vector<int>& a, int n, int i) {
 2     cout << "step" << i << ": ";
 3     for (int j = 0; j < n; j++) {
 4         cout << a[j] << " ";
 5     }
 6     cout << endl;
 7 }
 8 void insertionSort(vector<int>& a, int n) {//{ 9,1,5,6,2,3 }
 9     for (int i = 1; i < n; ++i) {
10         if (a[i] < a[i - 1]) { //若第i个元素⼤于i-1元素,直接插⼊。⼩于的话,移动有序表后插⼊
11                 int j = i - 1;
12             int x = a[i]; //复制为哨兵,即存储待排序元素
13             //a[i] = a[i - 1]; //先后移⼀个元素,可以不要这⼀句,跟循环⾥⾯的功能᯿复了
14                 while (j >= 0 && x < a[j]) { //查找在有序表的插⼊位置,还必须要保证j是>= 0的 因为a[j]要合法
15                         a[j + 1] = a[j];
16                     j--; //元素后移
17                 }
18             a[j + 1] = x; //插⼊到正确位置
19         }
20         print(a, n, i); //打印每趟排序的结果
21     }
22 }

 

标签:int,插入排序,元素,有序,print,排序
From: https://www.cnblogs.com/Sandals-little/p/17761624.html

相关文章

  • 【基础算法】排序算法 —— 插入排序
    一、算法原理插入排序将数组分为已排序区间和未排序区间,初始已排序区间只有数组第1个元素,未排序区间从下标1开始到数组末尾。每次取未排序区间的第1个元素,将它插入已排序区间的合适位置,并保证已排序区间一直有序。重复这个过程,直到未排序区间为空,算法结束。给有序数组(已排序区......
  • 插入排序:简单而有效的排序方法
    在计算机科学中,排序算法是一个重要且常见的主题,它们用于对数据进行有序排列。插入排序(InsertionSort)是其中一个简单但有效的排序算法。本文将详细解释插入排序的原理和步骤,并提供Java语言的实现示例。插入排序的原理及性能分析插入排序的核心思想是逐个将未排序的元素插入到已排序......
  • 插入排序
    classSolution:definsertion_sort(lst):foriinrange(1,len(lst)):forjinrange(i,0,-1):iflst[j]<lst[j-1]:lst[j],lst[j-1]=lst[j-1],lst[j]else:......
  • 链表插入排序
    创建节点类publicclassNode{intn;Nodenext;}第1次推导publicclasstest{publicstaticvoidmain(String[]args){//新建节点Nodenode1=newNode();node1.n=2;Nodenode2=newNode();node......
  • 数组插入排序
    第1次推导publicclasstest{publicstaticvoidmain(String[]args){int[]ints={2,5,3,1,8,9};inttmp;//存储临时变量intj;//开始比较第几位的数//第1次//2,5,3,1,8,9j=1;//比较索引1的数......
  • 【从0学习Solidity】 10. 控制流,用solidity实现插入排序
    【从0学习Solidity】10.控制流,用solidity实现插入排序博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发,期待与您一起在移动开发的世界中,不断进步和......
  • [CSP-J 2021] 插入排序
    题目描述插入排序是一种非常常见且简单的排序算法。小Z是一名大一的新生,今天H老师刚刚在上课的时候讲了插入排序算法。假设比较两个元素的时间为\(\mathcalO(1)\),则插入排序可以以\(\mathcalO(n^2)\)的时间复杂度完成长度为\(n\)的数组的排序。不妨假设这\(n\)个数......
  • 直接插入排序算法及其改进
    插入排序,分为直接插排,和二分插排直接插入排序大体思路:选取<数组>,将其余数依次按顺序往里放。(C语言实现)#include<stdio.h>voidinsertSort(int*a);intmain(){inta[6]={5,2,4,6,1,3};//这里也可以改成自定义数组insertSort(a);intk;for(k=0;......
  • 希尔排序:优化的插入排序
    希尔排序(ShellSort)是一种插入排序的改进算法,它通过比较相距一定间隔的元素进行排序,逐步减小间隔,最终实现整体有序。本文将详细介绍希尔排序的工作原理,提供示例和Python、Go、Java以及C语言的实现代码。希尔排序的基本思想希尔排序的核心思想是将整个待排序序列分割成若干个子序列,......
  • 算法回顾之二:直接插入排序
    算法回顾系列第二篇:直接插入排序算法-------------------------------------------直接插入排序基本原理:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含一个元素,无序表中包含有n-1个元素。排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当......