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

java部分排序算法

目录

1.直接插入排序

2.折半插入排序

3.选择排序

4.冒泡排序


十大内部排序算法:

选择排序

直接选择排序、堆排序

交换排序

冒泡排序、快速排序

插入排序

直接插入排序、折半插入排序、Shell 排序

归并排序

桶式排序

基数排序

1.直接插入排序

每插入一个数据,就会在原来序列中进行排序,插入几次排序几次。

public class YangSort {
    public static void main(String[] args) {
        int []nums={2,8,5,3,9,3};
        numsSort(nums);
        for(int i = 0;i < nums.length;i++){
            System.out.print(nums[i]+"\t");
        }
    }
    //直接插入排序
    public static void numsSort(int []nums){
        for(int i = 1; i < nums.length; i++){
            int temp = nums[i];//temp=8
            int j = i-1;//j=0
            for(;j >= 0 && temp < nums[j]; j--){
                nums[j+1] = nums[j];
            }
            nums[j+1] = temp;
        }
    }
}

2.折半插入排序

用二分法根据插入数据大小确定插入数据应所处位置,再把之后的数据后移。

    //折半插入排序
    public static void halfSort(int[]nums){
        for(int i = 1; i < nums.length; i++){
            int temp = nums[i];
            int left = 0,right = i - 1;// 左指针 右指针
            while(left <= right){// 通过二分法寻找插入位置
                int mid = left +(right - left)/2;
                if(nums[mid] > temp){
                    right = mid -1;
                }
                else{
                    left = mid + 1;
                }
            }
            int j = i - 1;// 将left后面的数据向后移动,共有i+1个数据
            while(j >= left){
                nums[j + 1] = nums[j];
                j--;
            }
            nums[left] = temp;// 将数据插入通过二分法找到的位置
        } 
    }

3.选择排序

 依次选择最小值放在最前面

//选择排序
    public static void selectSort(int []nums){
        for(int i=0;i<nums.length;i++){
            int min=i;
            for(int j=i+1;j<nums.length;j++){//内层循环表示依次选出最小值的索引
                if(nums[j]<nums[min]){
                    min=j;
                }
            }
            if(min != i){//把i之后选出的最小值与i所在值互换
                int temp=nums[i];
                nums[i]=nums[min];
                nums[min]=temp;
            }
        }
    }

4.冒泡排序

每次选择一个最大值放到后面

    //冒泡排序
    public static void bubbleSort(int []nums){//外层循次数 为nums.length-1次
        for(int i=0;i<nums.length-1;i++){
            for(int j=0; j<nums.length-i-1; j++){//内层循环进行冒泡,因为每完成一次外层循环,就会在后面多一个有序序列,因此可以不用比较
                if(nums[j]>nums[j+1]){
                    int temp=nums[j];
                    nums[j]=nums[j+1];
                    nums[j+1]=temp;
                }
            }
        }
    }

上面的是部分排序方法。


说说最近的情况吧,这几天线下课都转为了线上课,一直在宿舍窝着,同时为即将的项目做准备,说说那个项目吧,还是基于springboot框架,但又添加了很多新的东西,所以这段时间需要把这些新的东西掌握,大概是下周吧,就要进行这个项目的实战了。

现在每天都要做核酸。

不知道为什么,我这段时间感觉到身心俱疲,可能是睡眠时间不足吧。

再过一段时间新生就会返校了,俺也可以被叫学姐了,这个还是挺让人开心的。

我也不知道该说些什么了,发文助手现在还是不给发步,监测到文章 质量较低,行吧行吧,我是在水博客,既然要水博客,那一定要好好水博客,水完之后我就去做核酸。

43EA4036E9689CE8E53C94C073B1E774,B675266EBD39BA4F5AD9E8EE0D750893,5F051E2996B9D664AC8873BBAB7A80D9。

上面是用的md5加密,大家自行取之。

相关文章:

  • Java8-特性
  • Mybatis-Plus快速入门|比Mybatis更简单好用的ORM框架
  • Java异常的捕获和处理
  • 若依一体式改包名
  • 【机器学习kaggle赛事】泰坦尼克号生存预测
  • 【C进阶】——详解10个C语言中常见的字符串操作函数及其模拟实现
  • vue--面试题
  • HotPlot
  • 只想买把牙刷却花了100块,千万警惕!一不小心就落入商家圈套
  • 检查java死锁的三种方式
  • 什么是内网穿透
  • 没交公积金可以贷款买房吗?
  • Go 语言中的多变量同时赋值、匿名变量以及变量作用域(Let‘s Go 四)
  • 设计模式学习35问笔记
  • matlab 设计BP神经网络对给出的英文字符分类
  • 0x05 Python数据分析,Anaconda八斩刀
  • 4个实用的微服务测试策略
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Java 内存分配及垃圾回收机制初探
  • Java|序列化异常StreamCorruptedException的解决方法
  • maven工程打包jar以及java jar命令的classpath使用
  • Ruby 2.x 源代码分析:扩展 概述
  • 程序员最讨厌的9句话,你可有补充?
  • 初探 Vue 生命周期和钩子函数
  • 力扣(LeetCode)357
  • 面试总结JavaScript篇
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 算法之不定期更新(一)(2018-04-12)
  •  一套莫尔斯电报听写、翻译系统
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​VRRP 虚拟路由冗余协议(华为)
  • #ifdef 的技巧用法
  • #QT(一种朴素的计算器实现方法)
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)Sublime Text3配置Lua运行环境
  • (转)Unity3DUnity3D在android下调试
  • .NET DataGridView数据绑定说明
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET6 命令行启动及发布单个Exe文件
  • .net专家(高海东的专栏)
  • ?
  • @property @synthesize @dynamic 及相关属性作用探究
  • []我的函数库
  • [<事务专题>]
  • [Android Studio 权威教程]断点调试和高级调试
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [bzoj1006]: [HNOI2008]神奇的国度(最大势算法)
  • [ERROR] ocp-server-ce-py_script_start_check-4.2.1 RuntimeError: ‘tenant_name‘