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

基础排序--冒泡--选择--插入

1、冒泡排序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>//冒泡排序
void bubblesort(int q[],int N) 
{int temp = 0;for(int i = 0;i<N-1;i++){for(int j = 0;j<N-i-1;j++){if(q[j]>=q[j+1])  //注意这里不要写成j++ {temp = q[j];q[j] = q[j+1];q[j+1] = temp;}}}}int main()
{int q[5] = {100,500,10,30,455};int n = sizeof(q) / sizeof(int);bubblesort(q,5);for(int i = 0;i<n;i++){printf("%d ",q[i]);}return 0;
}

2、选择排序

外层大循环是n-1次 (因为是两两对比)

内层小循环是从第二个元素开始

思路:将当前未排序区间的第一个元素,设置为最小值

然后从第二个元素开始对比,然后将对比出的最小值,与这个区间的第一个元素交换即可

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>//冒泡排序
void selectsort(int q[],int N) 
{int minIndex = 0;int temp;for(int i = 0;i<N-1;i++){//假设未排序区间第一个元素是最小值minIndex = i;//从第二个元素开始对比 for(int j = i+1;j<N;j++){if(q[j]<q[minIndex]){minIndex = j;}}// 将找到的最小值与未排序区间的第一个元素交换temp = q[minIndex];q[minIndex] = q[i];q[i] = temp;}
}int main()
{int q[5] = {1,500,10,30,455};int n = sizeof(q) / sizeof(int);selectsort(q,5);for(int i = 0;i<n;i++){printf("%d ",q[i]);}return 0;
}

3、插入排序

思路:将数组分为‘已排序区间’和‘未排序区间’,每次从未排序区间取一个元素,插入到已排序区间的合适位置,直到所有元素排序完成

默认第一个元素已排序,从第二个元素开始

设立一个下标 J , 表示已排序区间的最后一位

如果 J 的值 大于当前要比较的值,那么我们将 q【j】这一位往后移,同时 j-- ,继续向前比较

如果不用再比较了,那么直接让q[j+1]这一位原来的 q【j】 的值变成current的值即可

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>//插入排序
void insertsort(int q[],int n)
{int i,j,current;//未排序区间的第一个元素(从1开始,0号元素默认已排序)for(i=1;i<n;i++){current = q[i];j = i-1;  //j是已排序区间末尾下标 //内层循环while(j>=0 && q[j] > current){q[j+1] = q[j]; //元素后移一位 j--; //继续向前比较 } // 将current插入到正确位置(j+1是插入索引)q[j+1] = current;
}} int main()
{int q[5] = {1,500,1022,30,455};int len = sizeof(q) / sizeof(q[0]);insertsort(q,len);for(int i = 0;i<len;i++){printf("%d ",q[i]);}return 0;
}


文章转载自:

http://ySBnBg9J.tznLz.cn
http://Ndb9ZtFq.tznLz.cn
http://Tj5aJSxk.tznLz.cn
http://9YOpoXZF.tznLz.cn
http://FqVj6E05.tznLz.cn
http://LDQipdW5.tznLz.cn
http://p2bV4Zw5.tznLz.cn
http://qMoqcoFm.tznLz.cn
http://Au1MGSqw.tznLz.cn
http://yjIRRKRB.tznLz.cn
http://1QwHByhX.tznLz.cn
http://VJTQ3Jb0.tznLz.cn
http://PffNw6O9.tznLz.cn
http://qQJzVylr.tznLz.cn
http://Fx2HM58Y.tznLz.cn
http://bVkAC6Qb.tznLz.cn
http://nbT7RQ1v.tznLz.cn
http://0VuEoGRI.tznLz.cn
http://uaf7tIBK.tznLz.cn
http://fmA6ReIh.tznLz.cn
http://nCPJ5VCs.tznLz.cn
http://ju23IKlP.tznLz.cn
http://jjoA9rgK.tznLz.cn
http://DIRTkVBd.tznLz.cn
http://ckPyUGR2.tznLz.cn
http://xmfj3yaN.tznLz.cn
http://RbPTDWz6.tznLz.cn
http://n2K47aRo.tznLz.cn
http://GNiGoC6a.tznLz.cn
http://OBW6YrI0.tznLz.cn
http://www.dtcms.com/a/367694.html

相关文章:

  • 基于网络原理——HTTP/HTTPS的Web服务搭建与核心技术实践
  • Altera Quartus17.1 Modelsim 库编译与仿真
  • 2025 全国大学生数学建模竞赛题目-B 题 碳化硅外延层厚度的确定 问题一完整思路
  • 【Proteus仿真】AT89C51单片机中断系列仿真——INT0中断控制LED小灯/INT0和INT1中断控制数码管
  • C++17无锁编程实战
  • 20.35 ChatGLM3-6B QLoRA实战:4bit量化+低秩适配,显存直降70%!
  • Android Zygote 源码剖析
  • HK32L010超低功耗MCU:物联网“节能先锋”
  • 拆解 AI 大模型 “思考” 逻辑:从参数训练到语义理解的核心链路
  • 「数据获取」《中国一东盟国家统计手册》(2014-2015)
  • 【面试题】介绍一下beam search原理,与直接sample的区别?
  • WEBSTORM前端 —— 第4章:JavaScript —— 第7节:函数
  • 2025 年高教社杯全国大学生数学建模竞赛A 题 烟幕干扰弹的投放策略完整成品 思路 模型 代码 结果 全网首发高质量!!!
  • 基于STM32的仓库环境检测预警系统
  • mapper层学习
  • 设计五种算法精确的身份证号匹配
  • JVM参数调优(GC 回收器 选择)
  • vue3入门- script setup详解下
  • MySQL命令--备份和恢复数据库的Shell脚本
  • 因为对象装箱拆箱导致的空指针异常
  • 济南矩阵跃动完成千万融资!国产GEO工具能否挑战国际巨头?
  • 【Linux基础】Linux文件系统深度解析:EXT4与XFS技术详解与应用
  • Opencv: cv::LUT()深入解析图像块快速查表变换
  • 【FPGA】单总线——DS18B20
  • 安装VScode和nodeJS
  • 【SuperSocket 】SuperSocket 中自定义 Session
  • 【涂鸦T5】6. lvgl显示光感数值
  • 【CS32L015C8T6】配置单片机PWM输出(内附完整代码及注释)
  • 华为校招实习留学生机试全攻略:真题目录+算法分类+在线OJ+备考策略
  • 【机器学习】HanLP+Weka+Java=Random Forest算法模型