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

运城盐湖区姚孟信通网站开发中心网站建设模板推广

运城盐湖区姚孟信通网站开发中心,网站建设模板推广,宿迁网站建设宿迁,江苏省高校品牌专业建设网站排序算法 冒泡排序选择排序插入排序递归算法递归求1~100的和递归求阶乘 快速排序总结 冒泡排序 相邻两个元素比较,大的放右边,小的放左边 第一轮循环结束最大值已经找到,在数组最右边(归为算法) 第二轮在剩余的元素比较找到次大值,第二轮可以少循环一次 如果有n个数据,总共我们… 排序算法 冒泡排序选择排序插入排序递归算法递归求1~100的和递归求阶乘 快速排序总结 冒泡排序 相邻两个元素比较,大的放右边,小的放左边 第一轮循环结束最大值已经找到,在数组最右边(归为算法) 第二轮在剩余的元素比较找到次大值,第二轮可以少循环一次 如果有n个数据,总共我们只要执行n-1论代码就可以了 public static void main(String[] args) {//冒泡排序int arr[]{2,4,5,3,1};//利用冒泡索引将他变成12345//第一轮结束后最大值在最右边for (int i 0; i arr.length-1-0; i) {//这里是length-1的原因是因为比较第四个元素的时候 4跟5比较 5最后一个就不需要比较了if(arr[i]arr[i1]){int temparr[i];arr[i]arr[i1];arr[i1]temp;}}//遍历数组for (int i 0; i arr.length; i) {// System.out.print(arr[i] );//2 4 3 1 5}//第二轮for (int i 0; i arr.length-1-1; i) {//这里是length-1的原因是因为比较第四个元素的时候 4跟5比较 5最后一个就不需要比较了if(arr[i]arr[i1]){int temparr[i];arr[i]arr[i1];arr[i1]temp;}}//遍历数组for (int i 0; i arr.length; i) {System.out.print(arr[i] );//2 3 1 4 5}//第三轮....//第四...}以上代码比较冗余 改进思路:采用嵌套循环的思路.外循环表示要执行的轮数也就是length-1 {2,4,5,3,1}比如这个要执行的轮数是0 1 2 3 . 4轮即可 内循环是每轮内执行的代码根据以上代码得出是length-1-i. i是0 1 2 3 4依次 内循环第一次0索引执行每次的比较交换代码得到2 4 3 1 5 内循环 public static void main(String[] args) {//冒泡排序int arr[]{2,1,5,4,3};//利用冒泡索引将他变成12345//第一轮结束后最大值在最右边for (int i 0; i arr.length-1; i) {for (int j 0; j arr.length-1-i; j) {//这里是length-1的原因是因为比较第四个元素的时候 4跟5比较 5最后一个就不需要比较了//内循环:每一轮如何比较数据并找到最大值//-1是防止月结//-i是提高效率 每一轮执行的次数应该比上一轮少一次if(arr[j]arr[j1]){int temparr[j];arr[j]arr[j1];arr[j1]temp;}}}printarr(arr);}选择排序 核心思想 一轮比较确定一个最小的数据(归为),他就排在第一个 第二轮就直接从1索引开始找第二小的 拿着索引1的跟后面所有的比较一遍 遇见小的就交换 public static void main(String[] args) {//选择排序int arr[]{2,4,5,3,1};//第一轮//int i 0-1因为自己没有必要跟自己比较for (int i 01; i arr.length; i) {if (arr[0]arr[i]){int temparr[0];arr[0]arr[i];arr[i]temp;}}//printarr(arr);//1 4 5 3 2//第二轮//int i 0-1因为自己没有必要跟自己比较for (int i 02; i arr.length; i) {if (arr[1]arr[i]){int temparr[1];arr[1]arr[i];arr[i]temp;}}//printarr(arr);//1 2 5 4 3//第三轮//int i 0-1因为自己没有必要跟自己比较for (int i 03; i arr.length; i) {if (arr[2]arr[i]){int temparr[2];arr[2]arr[i];arr[i]temp;}}printarr(arr);//1 2 3 5 4 }以下改进 public static void main(String[] args) {//选择排序int arr[]{2,4,5,3,1};//外循环 表示我拿着哪个索引上的值跟后面的比较//length-1是因为最后一个索引不需要跟自己比较for (int i 0; i arr.length-1; i) {for (int j i1 ; j arr.length; j) {//内循环是每一轮我要做什么事情//内循环表示拿着i跟i后面的数据交换 .j相当于i后面的数据if(arr[i]arr[j]){int temparr[i];arr[i]arr[j];arr[j]temp;}}}printarr(arr);}插入排序 插入排序思想:将前面的索引看成有序的(前面的几个取决于有序的有几个),后买你的看成无序的. 然后遍历无序,将遍历的到的元素插入有序序列中.如遇到相同数据,插在后面 public static void main(String[] args) {int arr[]{3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};//找到无序数组从哪里开始int startIndex-1;//用-1是因为-1是无效的相当于定义为0;for (int i 0; i arr.length; i) {if(arr[i]arr[i1]){//这个相当于找到了前面有序的索引startIndexi1;//这个i相当于有序序列的最后一个索引 加一是无序序列的起始索引break;}}for (int i startIndex; i arr.length; i) {//相当于遍历无序索引//遍历无序 得到元素与有序交换int ji;//记录要插入数据的索引while(j0arr[j]arr[j-1]){//j当前元素.j-1前一个元素. arr[j]可以理解为38 j-1就是44.然后交换 交换完后j-- j还是38 然后38和3判断int temparr[j];arr[j]arr[j-1];arr[j-1]temp;j--;//表示我是与前面的数据判断的}}printarr(arr);//2 3 4 5 15 19 26 27 36 38 44 46 47 48 50 }递归算法 就是方法自己调用自己 递归要写出口(就是调用自己到什么时候不调用自己了)否则就会跟上面一样导致栈溢出 递归求1~100的和 public static void main(String[] args) {//求1到100的和 用递归思想//大问题拆成小问题//1~100之间的和100(1~99之间的和)//1~99之间的和99(1~98之间的和)//..//1~2之间的和2(1~1之间的和)//1~1之间的和1;这个就是出口//找出口System.out.println(getSum(100));//5050}private static int getSum(int number) {if(number1){return 1;}//出口return numbergetSum(number-1);}}递归求阶乘 public class jiecheng {public static void main(String[] args) {//5的阶乘就是5! 5×4×3×2×1//找借口//找规律//大问题化小问题//5! 就是5×4!//4! 就是4×3!//...//1! 就是1(出口)System.out.println(getNumber(5));}private static int getNumber(int number) {if(number1){return 1;}return number*getNumber(number-1);} }原理内存图 快速排序 //快速排序的思想是:拿到一组数据 第一个作为基准数.//从头开始往后找找出比基准数大的.从尾部开始往前找 找比基准数小的//找到了直接交换数据 找不到继续往前找start end--.public static void main(String[] args) {int arr[]{6,1,2,7,9,3,4,5,10,8};//第一一个方法 传入数组 头部和尾部quicksort(arr,0,arr.length-1);for (int i 0; i arr.length; i) {System.out.print(arr[i] );}}private static void quicksort(int arr[], int i, int j){int starti;int endj;if(startend){//起始索引跑到结束索引后面了return;//这是递归出口}//传入基准数int basicNumberarr[i];//利用循环找到要交换的数字while(start!end){//利用end从后往前找 找到比基准数小的while(true){if(endstart||arr[end]basicNumber){break;}end--;}//利用start从前往后找 找到比基准数da的while(true){if(endstart||arr[start]basicNumber){break;}start;}//把start和end指向的元素进行交换int temparr[start];arr[start]arr[end];arr[end]temp;}//把基准数跟start或者end交换int temparr[i];arr[i]arr[start];arr[start]temp;//3 1 2 5 4 6 9 7 10 8//这是第一轮结束后的结果//后面的直接用递归调用//这里的i相当于起始索引//start-1相当于 6前面的. 因为前面start跟i进行了交换quicksort(arr,i,start-1);//这是6左边quicksort(arr,start1,j);//这是6的右边start1相当于9}总结
http://icebutterfly214.com/news/19821/

相关文章:

  • 量化选股与量化交易第886篇:通达信收割机 - Leone
  • 在 openEuler 上部署 Kafka 集群:深度性能评测与优化指南
  • openEuler + Nginx 高性能 Web 服务深度评测
  • pytorch汉字识别.
  • Russian Per GDP
  • 近期小细节总结
  • 深入理解浮点数格式:FP32、BF16、FP16与FP8的技术对比 - 详解
  • 2025年11月小学生学习机品牌推荐:五强口碑榜与选购指南
  • 详细介绍:Java 数学类详解:Math 类常用方法(abs/sqrt/random 等)一篇掌握
  • 【AI元人文:构建“舆情反射与模拟沙盘”机制(合二篇)】
  • 最长递增子序列(LIS)深度解析:从动态规划到贪心+二分
  • 小程序认证费:如何可以省下这小程序认证费用?
  • 完整教程:2024年提示工程架构师必看:用户参与研究的最新趋势,提升提示设计效果
  • 2025年11月产品设计公司推荐榜:权威评测五强排名与对比
  • leetcode热题100-001:两数之和
  • 2025年11月沈阳代理记账公司排行榜:专业顾问的深度推荐
  • ICPC2023杭州个人题解
  • JMeter题目
  • ▇壳子
  • 2025年比较好的设计感保温杯厂家推荐及选择参考
  • HTTPPOST表单提交接口测试
  • 2025年靠谱的无油烟不粘锅最新TOP厂家排名
  • 企业级AI知识库革命:开源免费的PandaWiki如何让团队效率飙升300%?
  • C++语言中指针变量int和取值操作ptr
  • 基于遗传算法求解流水车间调度问题(FSP)的MATLAB实现
  • Mybatis执行流程?是否支持延迟加载?延迟加载的底层原理?
  • 2025年靠谱的称重模块传感器热门厂家推荐榜单
  • 2025年比较好的赛事旗帜定制热门厂家推荐榜单
  • 2025年11月中国枸杞品牌综合推荐排行榜单:品质与健康的完美选择
  • 2025年比较好的304不锈钢焊管厂家最新TOP实力排行