当前位置: 首页 > news >正文

八大插入算法(有注释)

直接插入排序

//直接插入排序
void InsertSortingDirectly(int* nums,int numsSize){int j=0;for(int i=1;i<=numsSize-1;i++){//定义一个中间变量保存当前要插入的值int temp=nums[i];//在前面已排好序的序列中,找到合适的位置插入for(j=i-1;j>=0;j--){if(nums[j]>temp){//让该元素往后移nums[j+1]=nums[j];}else{break;}}nums[j+1]=temp;}
}

折半插入排序

//折半插入排序
void BinaryInsertionSort(int* nums,int numsSize){for(int i=1;i<numsSize-1;i++){int temp=nums[i];int left=0;int right=i-1;//二分查找的过程,其实也就是在前面已排好序的序列中运用二分查找的方法找到相应位置插入while(left<=right){int mid=(left+right)/2;if(nums[mid]>temp){left=mid-1;}else if(nums[mid]<temp){right=mid+1;}}//已经找到了相应位置,就把这个位置之后的元素(包括这个位置)依次向后移动。for(int j=i-1;j>=left;j--){nums[j+1]=nums[j];}nums[left]=temp;}
}

冒泡排序

//冒泡排序
void BubbleSort(int* nums,int numsSize){//外层循环表示的是排序次数,仅需排序n-1次for(int i=0;i<nums-1;i++){for(int j=0;j<numsSize-i-1;j++){//如果相邻元素中前面大于后面就要进行交换if(nums[j]>nums[j+1]){int temp=nums[j+1];nums[j+1]=nums[j];nums[j]=temp;}}}
}

快速排序

//快速排序
//划分操作
int huafen(int*nums,int left,int right){//以最左边的元素为基准元素int mid=nums[left];while(left<right){//从右边开始寻找比基准元素小(或等于)的元素while(nums[right]>=mid&&left<right){right--;}nums[left]=nums[right];while(nums[left]<=mid&&left<right){left++;}nums[right]=nums[left];}nums[left]=mid;return left;
}//递归排序
void Qsort(int*nums,int left,int right){if(left>=right){return;}int mid=huafen(nums,left,right);//左半部分快排Qsort(nums,left,mid-1);//右半部分快排Qsort(nums,mid+1,right);
}

 简单选择排序

//简单选择排序
void SelectSort(int* nums,int numsSize){//仅需进行n-1趟for(int i=0;i<numsSize-1;i++){int min=i;//这里是用打擂台的方法,从i+1到n中选出最小值,for(int j=i+1;j<numsSize-1;j++){if(nums[min]>nums[j]){min=j;}}//如果最小值变了那么久进行换位置,把最小的放在第一个if(min!=i){int temp=nums[i];nums[i]=nums[min];nums[min]=temp;}}
}

归并排序

http://www.lryc.cn/news/250180.html

相关文章:

  • 【2】基于多设计模式下的同步异步日志系统
  • npm管理发布包-创建与发布
  • 基于Spring,SpringMVC,MyBatis的校园二手交易网站
  • 酒店 KPI绩效考核指标及应用
  • WordPress两种方法实现上传媒体图片文件自动重命名
  • TZOJ 1405 An easy problem
  • SpringBoot+mysql+vue实现大学生健康档案管理系统前后端分离
  • CCC联盟数字车钥匙(三)——UWB MAC时间网格同步及Hopping
  • 一周上手 steam搬砖项目或成2024年最受欢迎副业
  • java数据结构(哈希表—HashMap)含LeetCode例题讲解
  • 快速了解ChatGPT(大语言模型)
  • 计算机软件的分类
  • 数据库应用:Ubuntu 20.04 安装MongoDB
  • 服务器配置 jupyter lab,并在本地浏览器免密登陆
  • WebUI自动化学习(Selenium+Python+Pytest框架)002
  • miot-plugin-sdk. npm install安装失败
  • 抓取微信好友列表信息
  • 创建JDK8版本的SpringBoot项目的方法
  • Python【走出棋盘】
  • 软件工程 - 第8章 面向对象建模 - 2 静态建模
  • ESXi vSAN 整合多主机磁盘
  • 手机充电 显示连接耳机 (充电没外放声音) 并且充电速度很慢
  • 前端开发的前世今生
  • CAP概念和三种情况、Redis和分布式事务的权衡
  • npm pnpm yarn(包管理器)的安装及镜像切换
  • Javase | Java工具类、(SSM)各种依赖的作用
  • 深入探究Python中的JSON、Pickle和Shelve模块:特性与区别
  • 文心大模型3.5 VS ChatGPT3.5,谁更会写代码 ?
  • 【网络安全】用永恒之蓝(Eternal blue)测试windows系统的安全性
  • 对于Web标准以及W3C的理解、对viewport的理解、xhtml和html有什么区别?