首页 > 其他分享 >912.排序数组--插入排序

912.排序数组--插入排序

时间:2024-02-14 13:13:10浏览次数:24  
标签:arr nums -- 插入排序 int newNum 复杂度 912

1.题目介绍

给你一个整数数组 nums,请你将该数组升序排列。

示例 1:
输入:nums = [5,2,3,1]
输出:[1,2,3,5]

示例 2:
输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]

2.题解

2.1 插入排序

思路

主要思路就是创建一个有序区域和无序区域,不断从无序区域取一张出来顺序插入有序区域即可

代码

#include<bits/stdc++.h>
using namespace std;
void swap(vector<int> &arr, int i, int j){
	int temp;	
	temp = arr[i];
	arr[i] = arr[j];
	arr[j] = temp;
}

int main(){
	int n, j;
	cin >> n;
	vector<int> a(n);
	for (int i = 0; i < n; i++){
		cin >> a[i];
	}
	// 第一张是有序区初始值,从第二张开始插入 
	for(int i = 1; i < n; i++){
		int newNum = a[i];
		// 从有序区域倒着开始找,直到找到第一个比待插入值小的数 
		for(j = i - 1; j >= 0; j--){
			if(a[j] > newNum) a[j + 1] = a[j];  // 若是较大值则全部往后推 
			else break; // 找到则跳出 
		}
		a[j + 1] = newNum; // 在较小值的后一个插入我们的新值 
	}
	
	for (int i = 0; i < n; i++){
		cout << a[i] << ' ';
	}
}

复杂度

1.时间复杂度:\(O(n^2)\)
2.空间复杂度:\(O(n)\)

标签:arr,nums,--,插入排序,int,newNum,复杂度,912
From: https://www.cnblogs.com/trmbh12/p/18015136

相关文章

  • 中国首次对论文撤稿和科研不端行为进行全国性审查
    相关:史无前例:中国首次对论文撤稿和科研不端行为进行全国性审查2月15日就是截止日期了,届时,各个大学必须提交一份过去三年内从英文和中文期刊撤稿的所有学术文章的综合清单。教育部科技信息化司于2023年11月20日发布的通知显示,提交的清单还需要进一步解释论文被撤稿的原因,并对涉......
  • Check if a given binary tree is BST【2月14日学习笔记】
    点击查看代码//CheckifagivenbinarytreeisBST#include<iostream>#defineMIN-999999#defineMAX999999structnode{intdata;node*left;node*right;};node*getnewnode(intx){node*temp=newnode;temp->data=x;......
  • Bootstrap 5 内联表单
    <formmethod="get"class="rowrow-cols-sm-automb-2gx-2align-items-center"><divclass="col-12"><labelasp-for="@Model.SearchString"class="form-control-plaintext">片名:</la......
  • 912.排序数组--冒泡排序
    1.题目介绍给你一个整数数组nums,请你将该数组升序排列。示例1:输入:nums=[5,2,3,1]输出:[1,2,3,5]示例2:输入:nums=[5,1,1,2,0,0]输出:[0,0,1,1,2,5]2.题解2.1冒泡排序思路跟选择排序,固定一个i,后续者不断打擂台挑战不同,冒泡排序永远是两个邻接值比较,较大值不断向后冒......
  • IfcMaterial
    IfcMaterial实体定义IfcMaterial是一种均匀或不均匀的物质,可用于形成元素(物理产品或其组件)。 IfcMaterial是材料名称和定义的基本实体;这包括通过名称和分类(通过参考外部分类)进行识别,以及IfcMaterialProperties(的子类型)定义的材料特性(各向同性或各向异性)的关联。IfcMaterial的......
  • 【算法】【动态规划】钢条切割
    1 题目来自算法导论的一道经典题目:2 解答动态规划原理虽然已经用动态规划方法解决了上面问题,但是大家可能还跟我一样并不知道什么时候要用到动态规划。总结一下上面的斐波拉契数列和钢条切割问题,发现两个问题都涉及到了重叠子问题,和最优子结构。①最优子结构用动态规......
  • java 工厂模式
    工厂模式(FactoryPattern)是Java中常用的一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。Java中的工厂模式主要有三种:简单工厂模式(SimpleFactoryPattern)、工厂方......
  • 912.排序数组--选择排序
    1.题目介绍给你一个整数数组nums,请你将该数组升序排列。示例1:输入:nums=[5,2,3,1]输出:[1,2,3,5]示例2:输入:nums=[5,1,1,2,0,0]输出:[0,0,1,1,2,5]2.题解2.1插入排序思路打擂台,每次确定第一名,第二名,第三名,依次往后代码#include<bits/stdc++.h>usingnamespace......
  • java 抽象工厂模式
    抽象工厂模式(AbstractFactoryPattern)是一种创建型设计模式,它提供了一种方式来封装一组具有共同主题的单个工厂,而不需要指定它们的具体类。在抽象工厂模式中,每个工厂都负责创建一组产品(通常是一系列产品或产品线),这些产品通常相互关联或有某种约束。在Java中实现抽象工厂模式,你通......
  • 什么是 axios?axios与promise区别
    Axios是一个基于promise的HTTP库,可以用在浏览器和node.js中promise是现代javascript中异步编程的基础,是一个由异步函数返回的可以向我们指示当前操作所处的状态的对象使用cdn:<scriptsrc="https://unpkg.com/axios/dist/axios.min.js"></script>//为给定ID的u......