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

插入排序

时间:2023-12-27 20:44:07浏览次数:24  
标签:prei cout int 插入排序 -- 随机数

#include <bits/stdc++.h>
using namespace std;

int a[10005];

int main()
{
  int n;
  cin >> n;
  srand(time(0)); //随机数发生器

  for (int i = 1; i <= n; i++)
    a[i] = rand() % 100; //产生0--99的随机数
  for (int i = 1; i <= n - 1; i++)
    cout << a[i] << " ";
  cout << a[n] << endl;

  for (int i = 2; i <= n; i++)
  {
    int t = a[i];
    int prei = i - 1;
    while (a[prei] > t)
    {
      a[prei + 1] = a[prei];
      prei--;
    }
    a[prei + 1] = t;
  }

  for (int i = 1; i <= n - 1; i++)
    cout << a[i] << " ";
  cout << a[n] << endl;
  return 0;
}

标签:prei,cout,int,插入排序,--,随机数
From: https://www.cnblogs.com/luliusheng/p/17931383.html

相关文章

  • 直接插入排序
    直接插入排序是一种简单的排序方法,具体做法是:在插入第i个关键码时,k1,k2,...,ki-1已经排好序,这时将关键码ki依次与关键码ki-1,ki-2,...,进行比较,找到ki应该插入的位置时停下来,将插入位置及其后的关键码依次向后移动,然后插入ki。下面函数insertSort用直接插入排序对整数序列进行升序......
  • 算法学习笔记四一插入排序
    目录什么是插入排序算法原理示例代码什么是插入排序插入排序可理解为扑克牌摸牌的过程,手中的牌为有序序列,然后随机摸一张牌,根据牌的大小插入到有序序列对应的位置。算法时间复杂度为O(n^2)算法原理默认列表第一个元素为基准,从第二个元素和第一个元素进行比较,并放入到相应位置......
  • 插入排序详解
    算法思想把数列分成两部分,前面部分为有序区,后面部分为无序区,初始时有序区只有一个元素,一个数字组成的数列当然是有序的;遍历无序区,把其中每个数不断地插入有序区,形成一个更大的有序区,遍历完成时整个数列也就有序了!学习过程思想(1)两层for循环,第一层for循环是无序区,第......
  • 排序 - 插入排序
    插入排序直接插入排序算法描述将一条记录插入到有序表中,得到新的有序表。将需要调整位置的元素暂存在r[0]处,然后再进行插入。算法实现voidInsertSort(SqList&L){for(i=2;i<=L.length;i++)if(L.r[i].key<L.r[i-1].key){L.r[0]=L.......
  • 详解十大经典排序算法(三):插入排序(Insertion Sort)
    算法原理每次从无序部分选择一个元素,将其插入到有序部分的正确位置,重复这个过程直至整个数组有序。算法描述插入排序是一种简单直观的排序算法,它的基本思想是将一个待排序的元素插入到已经排序好的序列中的适当位置,从而得到一个新的、长度加一的有序序列。插入排序的过程类似于整理......
  • 折半插入排序
    ACC==1升序,ACC==-1降序#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstruct{intNO;intAge;charName[50];}Student;typedefstruct{intStudentCount;Student*data;}Sqlist;voidBinsersort(Sql......
  • 直接插入排序
    01234528123      从下标1开始遍历,默认第一个元素是已排序序列。例如对元素3进行插入排序:下标0-3分别是2-5-8-12;此时k=arr[4]=3;j=i-1=3;从后往前遍历找到k应该插入的位置当while循环条件 j>=0&&arr[j]>k 一直成立时,arr[j+1]=ar......
  • [Luogu] P7910 [CSP-J 2021] 插入排序
    [CSP-J2021]插入排序-洛谷昨天下午爆肝一下午都没整出来(悲是我太菜了思路第一种想法,暴力即,每次修改操作后重新维护整个数组,时间复杂度\(O(Qn^2)\),能拿52pts但是,想要拿满分,很简单,只需要把排序的双层循环\(n^2\)变为\(n\)即可因为冒泡是对每个点都进行枚举,但是需要修改的......
  • C++简单插入排序
    voidinsertSort(inta[],intlen){ inti,j,temp; if(len==1)return; for(i=1;i<len;i++){ if(a[i]<a[i-1]){ temp=a[i]; for(j=i-1;j>=0&&a[j]>temp;j--){ a[j+1]=a[j]; }a[j+1]=temp; ......
  • 2008秋-计算机软件基础-直接插入排序
    //==============================================//直接插入排序(StraightSelectionSort)//Author:emanlee//直接插入排序c语言源程序//==============================================#defineN5#include<stdio.h>//显示元素voidDisplay(inta[],intelem......