IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> java部分排序算法 -> 正文阅读

[数据结构与算法]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加密,大家自行取之。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:19:25  更:2022-09-24 21:20:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 14:06:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码