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

java学习:四大排序

冒泡排序:1.比较相邻的元素如果第一个比第二个大,就交换它们两个;

                  2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对;

                  3.重复以上步骤,直至完成。

public static void bubbleSort(int[] arr){for(int j=0;j<arr.length;j++){for(int i=0;i<arr.length-1;i++){if(arr[i]>arr[i+1]){int temp=arr[i];arr[i]=arr[i+1];arr[i+1]=temp;            }        }}
}
public static void main(String[] args){int[] arr={5,7,4,2,0,3,1,6};bubbleSort(arr);for(int i=0;i<arr.length;i++){System.out.print(arr[i]+" ");}}

定义一个指针i,让i于相邻的元素i+1经行对比,一整轮下来就可以确定一个固定的元素:

for(int i=0;i<arr.length-1;i++){//一次循环确定一个有序的数if(arr[i]>arr[i+1]){int temp=arr[i];//交换操作arr[i]=arr[i+1];arr[i+1]=temp;            }        }

一共有n个元素所以需要n轮:

for(int j=0;j<arr.length;j++)

简单选择排序:开始定义一个最小值的位置,然后遍历剩余的n-1给元素找到一个小于这个值的与之交换。

开始的时候我们定义一个最小值j,j指针指向该值的序号如图j=0;定义一个新指针i去寻找剩余的值中的最小值。

找到之后另这两个值经行交换:

j自增1,这时就有一个有序的数,接下来重复该过程。

public static void sort(int[] arr){for(int j=0;j<arr.length;j++){int minIndex=j;//定义一个最小值下标为j;for(int i=j+1;i<arr.length;i++){if(arr[i]<arr[minIndex]){minIndex=i; //更新最小值下标。           }                    }int temp=arr[j];arr[j]=arr[minIndex];arr[minIndex]=temp;    }
}

插入排序:

从数组第二个元素开始,将其视为待插入的元素,我们用j来指代,让改元素于前边的元素进行对比;

现在数组arr[0],arr[1]有序,将待排顺序数组arr[2]于前两个经行对比

重复该过程。

public static void sort(int[] arr){for(int j=1;j<arr.length;j++){for(int i=j-1;i>=0;i--){if(arr[i]>arr[i+1]){int temp=arr[i];arr[i]=arr[i+1];arr[i+1]=temp;            }        }    }
}

希尔排序:

  1. 选择一个增量序列(如 1, 4, 13, 40...),增量逐渐减小到 1。
  2. 对于每个增量 h,将数组分割成 h 个子数组,每个子数组包含位置相差 h 的元素。
  3. 对每个子数组执行插入排序。
  4. 减小增量 h,重复步骤 2-3,直到 h=1。
  5. 当 h=1 时,整个数组被视为一个子数组,执行最后一次插入排序,完成排序。
public static void sort(int[] arr){for(int h=arr.length/2;h>=1;h/=2){for(int j=h;j<arr.length;j++){for(int i=j-h;i>=0;i-=h){if(arr[i]>arr[i+h]){int temp=arr[i];arr[i]=arr[i+h];arr[i+h]=temp;                }            }        }    }
}

http://www.dtcms.com/a/438133.html

相关文章:

  • npm install 中的 --save 和 --save-dev 使用说明
  • 个人网站欣赏h5网站和传统网站区别
  • Inception V3--J9
  • Spring——编程式事务
  • 如何比较两个目录档案的差异
  • 美发店收银系统教程
  • wordpress网站怎么打开对于高校类建设网站的要求
  • 理解神经网络流程
  • 2025年渗透测试面试题总结-99(题目+回答)
  • Linux启动流程与字符设备驱动详解 - 从bootloader到驱动开发
  • 探讨区块链与生物识别技术融合的安全解决方案
  • 手机应用商店app下载官方网站下载建设厅网站技术负责人要求
  • 电子商务网站开发过程论文6保定网站建设哪家好
  • Lua语法
  • stm32摇杆adc数据分析
  • 公司网站开发费用如何做账网站三合一建设
  • MySQL 进阶知识点(十二)---- 管理
  • C/C++贪吃蛇小游戏
  • 【Linux】多线程创建及封装
  • 苏州网站推广公司创业商机网餐饮
  • unity 读取PPT显示到屏幕功能
  • Django - 让开发变得简单高效的Web框架
  • C# 判断语句详解
  • 新建一个网站需要多少钱舟山专业做网站
  • JVM中的垃圾回收机制
  • 【计算机视觉】概述
  • 【第五章:计算机视觉-项目实战之生成对抗网络实战】2.基于SRGAN的图像超分辨率实战-(2)实战1:DCGAN模型搭建
  • 【精品资料鉴赏】大型企业网络安全整体解决方案
  • 重庆建设医院官方网站wordpress中文社区
  • [优选算法专题三.二分查找——NO.23搜索旋转排序数组中的最⼩值]