首页 > 其他分享 >插入排序瞟一眼就搞定!

插入排序瞟一眼就搞定!

时间:2024-10-30 15:44:42浏览次数:3  
标签:搞定 point 瞟一眼 插入排序 元素 arr int 指针

插入排序的定义

插入排序定义互联网到处都有,就不巴巴了,记住一句话:把后面没排序的插入到前面排序的!

插入排序步骤

  1. 默认第一个元素为已排序元素,从第二个开始进行比较。
    在这里插入图片描述

  2. 插入到前面后第一第二个元素为有序,继续比较第三个元素。

在这里插入图片描述

  1. 后面就一样操作,直到最后一个元素比较完成。

在这里插入图片描述

接下来就是最主要的代码了(C/C++)

C语言实现

//由于c语言中数组是直接传地址到函数中,所以在函数中修改对应数组,函数外对应也会修改
void insertSort(int arr[],int size){

	//循环,从第二个元素开始和前面元素对比 
	for(int i=1;i<size;i++){
		int point=arr[i];//设置一个基准元素
		int p=i-1;//设置指针p从基准元素前一个元素开始进行移动,对比元素大小
		while(p>=0&&arr[p]>point){
			arr[p+1]=arr[p];//元素整体后移 
			p--;//移动p指针 
		} 
		arr[p+1]=point;//最后基准元素插入指针所在位置后方 		
	}
        
}


C++实现

//C++中有vector可以使用,这里传入对应vector的地址,所以使用&arr,以保证函数外也改变
void insertSort(vector<int> &arr){
	//循环,从第二个元素开始和前面元素对比 
	for(int i=1;i<arr.size();i++){
		int point=arr[i];//设置一个基准元素
		int p=i-1;//设置指针p从基准元素前一个元素开始进行移动,对比元素大小
		while(p>=0&&arr[p]>point){
			arr[p+1]=arr[p];//元素整体后移 
			p--;//移动p指针 
		} 
		arr[p+1]=point;//最后基准元素插入指针所在位置后方 		
	}
        
}

最后总结

  • 插入排序算法很好理解就是从后面的待排序内容取一个基准元素插入到前面已排序内容中对应适当的位置。
  • 代码实现需要考虑到指针,即使用指针从基准元素前往前移动找到基准元素自己应该在的位置。
  • 时间复杂度最坏情况下,即刚好是逆序的情况下为O(n^2),怎么计算?数列1~n-1的求和
  • 时间复杂度最好情况下,即刚好是有序的情况下为O(n)。
  • 空间复杂度为O(1),只为指针开辟常数级空间。

标签:搞定,point,瞟一眼,插入排序,元素,arr,int,指针
From: https://blog.csdn.net/qq_53802079/article/details/143308580

相关文章

  • 3大策略+1款工具,在K8s上搞定应用零宕机
    原文链接:https://jaadds.medium.com/building-resilient-applications-on-kubernetes-9e9e4edb4d33翻译:cloudpilot.aiKubernetes提供的某些特性可以帮助企业充分利用云原生应用的优势,例如无需关闭整个集群即可更改基础设施、自动修复应用程序以及根据流量进行动态扩展。然......
  • 2个月搞定计算机二级C语言——真题(6)解析
    1.前言本篇我们讲解2个月搞定计算机二级C语言——真题62.程序填空题2.1题目要求2.2提供的代码#include<stdio.h>unsignedlongfun(unsignedlongn){unsignedlongx=0;intt;while(n){t=n%10;/**********fou......
  • python 入门九大排序:1冒泡排序2插入排序3选择排序4快速排序5归并排序6堆排序7计数排序
    1冒泡排序:冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。代码如下:importnumpyasnpdefbubbling(arr):n=len(arr)foriinrange(n-1):forjinrange(n-i-1):ifarr[j......
  • 【Nginx学习】5步轻松搞定:用Nginx配置一个静态Web服务器,文件路径定义你真的会了吗?
    ......
  • 多账号矩阵运营管理难题,只要一招搞定!
    在全球贸易竞争日益激烈的当下,越来越多的外贸企业纷纷转向矩阵运营。这是为何呢?首先,TK矩阵运营能极大地拓展品牌影响力。使用壹起航TK外贸矩阵通之后,在多个平台建立多个账号,企业可以针对不同市场和受众,全方位展示自身优势,吸引更广泛的潜在客户。例如,一家外贸工厂可在不同平台......
  • 小红书起号全流程:7天搞定起号,3大真相揭晓!
    在小红书上起号,很多新人总会面临各种问题:“如何快速起号?”“到底该怎么操作才能避开雷区?”今天,我为你整理了一份全面的起号秘笈,帮助你在短短七天内掌握起号技巧,还会揭示三大核心真相,让你少走弯路,稳步起号! 七天起号计划 第1天:探索用户标签起号的第一步是通过浏览、点赞......
  • 【2024版】PyCharm专业版下载+安装+汉化教程,Pycharm环境配置和使用指南,零基础小白Pyth
    前言PyCharm是一款由JetBrains公司推出的PythonIDE。它提供了一个简单易用的图形用户界面,并且具有很多有用的功能,如代码补全和自动代码检查,帮助开发人员更加高效地编写Python代码。此外,PyCharm还提供了调试器和版本控制系统集成,使得开发人员能够更加轻松地管理和维护他们的......
  • 如何搞定所有 Web 前端面试题
    如何搞定所有Web前端面试题TIP工作能力≠面试能力,面试之前刻意练习,强化训练。聚焦前端面试必考的刚需内容,掌握解决面试题的思路、技巧与方法论。一、方法论总结首先要清楚企业对于工程师能力要求,自身能力素养及面试招聘流程1、企业招聘工程师的三个级别面试考察......
  • 【AI产品经理附学习资料】让你从入门到精通,这一篇文章通通搞定!
    一、AI产品经理工作全流程概览AI产品经理工作全流程中与普通产品经理的区别主要是多了算法模型部分,包括模型预研、数据准备、模型构建、模型宣讲、模型验收,协作的对象相对普通产品经理也多了算法工程师。二、需求定义需求定义主要要定义清楚以下几点:1、做什么?2、为什......
  • 小渡Al论文写作:50个GPT学术指令——1天搞定1篇论文
    选题与研究方向假设你是某高校某专业的教授,请根据我感兴趣的研究方向,为我提供10个新颖且有研究意义的论文选题。我对某个选题感兴趣,请列举几个该领域当前的研究热点和争议点供我选择。假设我是某专业本科生/研究生,请为我提供几个当前热点的论文选题,并解释每个选题的研究价值。......