数据结构中几种排序的java实现

数据结构与算法—常见的几种排序算法及实现(java) 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。 以下我们将介绍几种常见的排序,几种排序算法的时间复杂度及稳定性如下: 1、冒泡排序 冒泡排序的效率很低,但是算法实现起来很简单,因此很适合作为研究排序的入门算法。 基本思想 对当前还未排好序的... 阅读详情

1、选择排序

public static int[] selectSort(int[] arrys){
        int high=arrys.length;
        for(int i=0;i<high-1;i++){
            for(int j=i+1;j<high-1;j++){
                if(arrys[i]>arrys[j]){
                int temp=arrys[j];
                arrys[j]=arrys[i];
                arrys[i]=temp;
                }
            }       
        }
        return arrys;

}

2、冒泡排序

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

3、插入排序

    public static int[] insertSort(int[] arrys){

        for(int i=1;i<arrys.length;i++){
            int currentElement=arrys[i];
            int j;
            for( j=i-1;j>=0&&arrys[j]>currentElement;j--){
                arrys[j+1]=arrys[j];
            }
            arrys[j+1]=currentElement;
        }
        return arrys;

    }

4、快速排序

    public static int[] quickSort(int a[],int low,int high){
            int i=low;    
            int j=high;    
            int key=a[low];
            if (low < high){    
                while(i<j){ // 此处的while循环结束,则完成了元素key的位置调整    
                    while(i<j&&key<=a[j]){    
                        j--;    
                    } 
                    int temp=a[i];
                    a[i]=a[j];
                    a[j]=temp; 
                   //a[i]=a[j];    
                    while(i<j&&key>=a[i]){    
                        i++;    
                    }    
                    a[j]=a[i];    
                    a[i]=key;  //此处不可遗漏  
                }     
                quickSort(a,low,i-1);    
                quickSort(a,i+1,high);    
            }    
        return a;

    }

5、希尔排序

    public static int [] shellSort(int[] arrys){
        //定下间隔,时间复杂度是O(N^2)
        for(int gap=arrys.length/2;gap>0;gap=gap/2){
            for(int i=gap;i<arrys.length;i++){
                int tem=arrys[i];
                //不仅比较一个间隔的的大小,还要考虑两个及其两个以上间隔数与tem的比较
                for(int j=i;j>=gap&&tem<arrys[j-gap];j=j-gap){
                    arrys[j]=arrys[j-gap];
                    arrys[j-gap]=tem;
                }
            }
        }
        return arrys;
    }

6、归并排序

    private static void inMergeSort(int[] arrys, int[] temp, int left, int right) {
        // TODO Auto-generated method stub
        int middle=(left+right)/2;
        if(left<right){
            inMergeSort(arrys, temp, left, middle);
            inMergeSort(arrys, temp, middle+1, right);
            merge(arrys,temp,left,middle,right);
            System.out.println(Arrays.toString(arrys));
        }
    }
    private static void merge(int[] arrys, int[] temp, int left, int middle, int right) {
        // TODO Auto-generated method stub
        int i=left;
        int j=middle+1;
        int k=0;
        while(i<=middle&&j<=right){
            if(arrys[i]<arrys[j]){
                temp[k++]=arrys[i++];
            }
            else{
                temp[k++]=arrys[j++];
            }
        }
        while (i<=middle){
            temp[k++]=arrys[i++];
        }
        while(j<=right){
            temp[k++]=arrys[j++];
        }
        for (int k2 = 0; k2<temp.length; k2++) {
            arrys[k2 ] = temp[k2];
        }
    }

再附上一张绝世好图

这里写图片描述

双参数威布尔分布(Weibull分布)参数计算(根据故障数据,求双参数威布尔分布的参数详细步骤) 根据故障数据求威布尔分布参数步骤 根据众多文献研究,设备故障数据大多服从指数分布、威布尔分布或对数正态分布。其中威布尔分布较为常用,本文主要介绍威布尔分布的简单应用,并根据某设备故障数据为例简单介绍威布尔分布参数的计算方法。 参考文献11参考文献22 1.双参数威布尔分布的概率密度函数、概率分布函数、可靠度函数: 2.预处理故障数据 将故障数据按时间排序,假设设备分别在以下时间点失效:11.1 、23.5、58.4……则将此时间从小到大排序。并计算中位秩。中位秩的计算公式如下: 其中i表示第几个数据,n 阅读详情

相关推荐

kaggle项目:纽约出租车行程时间NYC Taxi Trip Duration

纽约出租车形成时间预测(NYC Taxi Trip Duration)是Kaggle中的一个Playground竞赛。比赛数据集基于2016年纽约市黄色出租车行程记录数据,需要建立一个模型,根据单个行程属性,预测测试集中每次行程的持续时间。Kaggle项目模型XGBoost,评价指标RMSLE。

weixin_42113929的博客 2790

Java数据结构与算法----排序篇(十大排序算法在算法思想、代码上的比较)

使用Java 语言实现数据结构与算法中的排序算法,个人整理,方便后续复习的笔记

stu_kk的博客 732

利用ArcMap实现遥感图像语义分割标注的完整流程解析

本文详细解析了利用ArcMap进行遥感图像语义分割标注的完整工作流。从工程创建、数据导入、SHP文件创建,到实战勾画地物、要素转栅格,再到最终的裁剪对齐,提供了每一步的关键操作与避坑指南。该方法特别适合处理大尺寸、带地理坐标的遥感影像,能高效产出精准对齐的图像-标签对,为后续深度学习模型训练奠定可靠的数据基础。

gpu4optimizer的博客 1219

【数据结构】用Java实现七大排序算法

该趟排序从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R[i+1..n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区;假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的。1959年Shell发明,第一个突破O(n^2)的排序算法,是简单插入排序的改进版。

qq_53869058的博客 1968

取证实战:当嫌疑人电脑已关机,如何利用EFDD从休眠文件提取BitLocker密钥?

本文详细介绍了如何利用Elcomsoft Forensic Disk Decryptor(EFDD)从休眠文件(hiberfil.sys)中提取BitLocker密钥的实战技术。通过分析休眠文件中的内存快照,取证人员可以突破已关机加密设备的防线,获取关键解密信息。文章涵盖了工具配置、镜像获取、密钥提取及验证等完整流程,并提供了疑难问题解决方案和法律合规建议。

weixin_29315091的博客 346

Cursor Pro版保姆级开通教程:绕过7天试用,支付宝一步搞定(附地区报错解决方案)

本文详细介绍了Cursor Pro版的订阅流程,包括支付宝支付步骤和解决区域报错的实用方案。针对开发者常见的网络问题和云服务器配置需求,提供了从本地环境调整到云端部署的完整指南,帮助用户高效解锁Pro版的代码补全、私有代码库等核心功能。

weixin_28710999的博客 2112

Java八大排序方法(数据结构)

java排序算法

weixin_59692449的博客 902

Oracle监听配置

Oracle监听配置## 标题 选择“监听程序配置”,然后下一步。 选择重新配置,然后下一步/。 不用管,按下一步。 下一步。 选择“否”,下一步。 选择"本地net服务名配置",然后下一步。 选择“重新配置”,然后下一步。 服务名 是"Oracle",然后下一步。 主机为你的IP地址,在doc系统下通过"ipconfig"获取IP地址。然后输入,然后下一步。 选择“是,进行测试...

m0_46079215的博客 807

Java数据结构排序总结

如果不用递归,我们就需要模拟递归的这个过程,需要用合适的数据结构,在递归的过程中,主要是需要重新找新的left和right下标,所以先去照一次基准,此时就有了递归时的L下标和R下标,可以用栈来存放每次递归时需要的L和R下标,出栈时,出一个数据给到R下标,出栈一个值给到L下标,进行两边找基准,当栈不为空的时候,就出栈两个下标,根据这两个下标来继续找新的基准,此时出栈元素之后要根据这两个下标判断左右是否只有一个元素,当只有一个数据的时候,就不能入栈了。当栈弹空了,也就排序完成了。这也减少了递归的次数。

weixin_64874291的博客 571

C++大牛的博客

1. C++大牛的博客     Bjarne Stroustrup的博客: Bjarne Stroustrup’s Homepage Bjarne Stroustrup,不认识的可以去面壁了,没有他,就没有我们现在的饭碗。Bjarne Stroustrup是丹麦人,目前任教于TAMU。他的Homepage和他的书籍The C++ Programming Language一样

程序猿老樊的博客 6249

YOLO11涨点优化:损失函数优化 | 引入MPDIoU,利用边界框左上角和右下角距离,彻底解决重叠框匹配失效问题

【摘要】针对目标检测中重叠框匹配失效问题,本文提出基于MPDIoU损失函数的解决方案。MPDIoU通过同时约束边界框的左上角和右下角两点距离,有效解决了传统IoU损失在重叠场景下的优化歧义问题。文章首先分析YOLO系列在密集目标检测中的性能瓶颈,指出GIoU/CIoU等现有方法无法区分相同IoU值但偏移方向不同的预测框。随后详细解析MPDIoU的数学原理及其相对于主流损失函数的优势,证明两点距离约束能提供唯一优化方向。最后给出在YOLO11中实现MPDIoU的具体方案,包括核心代码修改点和架构适配建议。实验

2601_95807009的博客 173

数据结构Java版排序(一)

目录 1.概念 1.1稳定性 2.七大排序 2.1插入排序 2.1.1直接插入排序-原理 2.1.2性能分析 2.1.3折半插入排序(了解) 2.2希尔排序 2.2.1原理 2.2.2性能分析 2.3选择排序 2.3.1原理 2.3.2性能分析 2.4堆排序 2.4.1原理 2.4.2性能分析 2.5冒泡排序 2.5.1原理 2.5.2性能分析 2.6快速排序(重要) 2.6.1原理 2.6.2性能分析 1.概念 排序,就是使一串记录,按照其中的某个或某..

weixin_58850105的博客 4327

鸿蒙开发实战项目(四十七):图片编辑(ArkTS)

本篇Codelab主要介绍如何基于图片编解码,实现图片编辑。图片的解码。使用PixelMap进行图片编辑,如裁剪、旋转、亮度、透明度、饱和度等。图片的编码。

斌擎科技 1587

数据结构中的几种排序及Java实现

冒泡排序 思想:由数组头部开始,一次比较两个元素,如果他们的顺序错误就把他们交换过来。每次交换完成后,当前数组最大值就会被放在最后。 时间复杂度:O(n2) private void bubbleSort(int[] array) { for (int i = 0; i < array.length; i++) { for (int j = 0; j &l...

weixin_44379477的博客 299

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

数据结构中几种排序算法的Java实现

最近,编写Java面试宝典的程序,看到排序算法一章发现书中有的程序存在一些错误,现在将所有涉及到的排序算法Java实现如下: package test1; /*public class PaiXu { *//** * 1.冒泡排序 *//* public static void main(String[] args) { int[] a = {4,2,1,6,3,6,0,

nuisthou的博客 559

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

数据结构--Java实现几种常见排序

第一次在优快云上写博客,今天晚上刚好复习了一下排序相关的东西,就写一写这个吧。(话说markdown还不熟悉。。)冒泡排序:复杂度o(n^2) 可以增加一个flag标记减少比较趟数 稳定public static void bubbleSort(int[] arr) { //时间复杂度:O(n*2) int count = 0; for(int i =

LcritZ的博客 1136

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

关于数据结构的几种常见排序算法(java代码实现)

【代码】关于数据结构的几种常见排序算法(java代码实现)

weixin_45984640的博客 294

数据结构java排序代码_数据结构排序算法Java实现

闲的无聊又拿起了大学的数据结构的书看起来 《数据结构(c语言版)》严蔚敏 吴伟民编著。里面有几个排序算法,感觉挺好玩的,就想着写出来玩玩。package test.sort;/*** @Title: TODO* @Description: TODO* @author:* @date: 2014-8-10 上午11:20:43**/public class quickSort {private st...

weixin_33955307的博客 147

几种排序方法

以前在数据结构课上学习了几种排序,好像有点忘了,特意花一个下午的时间来复习一下,并用java实现出来 这是总结:http://blog.sina.com.cn/s/blog_4080505a0101iewt.html 转载于:https://www.cnblogs.com/lxm123/p/3691466.html...

weixin_30878361的博客 59

Java基础数据结构和算法

数据结构 Array数组 和C/C++以及其他语言一样,Java中的数组有差不多一样的语法。只是Java中除了8中基本类型,数组也是作为对象处理的,所以创建对象时也需要使用new关键字。和大多数编程语言一样,数组一旦创建,大小便不可改变。 算法 二分查找 对于有序数组,二分查找的效率在大数据量的情况下,效率明显: private static int find(int [] a

goup的专栏 3万+

数据结构中的几种排序算法与一些小知识

数据结构中的五大类排序方法以及一些小知识(掌握排序算法更有助于你的学习、考研、竞赛等)

L093117l的博客 1459

数组的几种排序算法的实现(1)

数据结构中的排序算法,各有用处,比如: 1,直接插入排序,在序列基本有序的情况下,移动的次数比较少,但是比较次数是一样的 复杂度O(n*n); 2,冒泡排序,这个不用说了吧,刚学C的人都懂了 3,希尔排序,只要是找出较好的增量,将数据排列成基本有序时,最后一次来一次直接插入排序,是对直接插入排序的改进.复杂度为O(n(3/2)); 4,快速排序,算是所有排序中复杂度一般情况下比较好的算法,它设了一...

weixin_30868855的博客 132

Java数据结构与算法(五)——排序

排序

MY_NEW_LIFE的博客 224

java数据结构和算法

数据结构 Array数组 和C/C++以及其他语言一样,Java中的数组有差不多一样的语法。只是Java中除了8中基本类型,数组也是作为对象处理的,所以创建对象时也需要使用new关键字。和大多数编程语言一样,数组一旦创建,大小便不可改变。  Java中有一个Arrays类,专门用来操作array。  Arrays中拥有一组static函数,  - equals():比较两个arr

mn_changeworld的博客 206

算法和数据结构学习

算法和数据结构学习

星月IWJ 593

JAVA排序

package org.idcn.jse; public class SortAll { /** * 冒泡排序,选择排序,插入排序,希尔(Shell)排序 Java的实现 */ public static void main(String[] args) { int[] i = { 1, 5, 6, 12, 4, 9, 3, 23, 39, 403, 596, 87 }; ...

buxin_2008的专栏 211
上一篇: java实现二叉树的三种遍历(前序、中序、后序)
下一篇: java中几种常见集合的底层实现原理(HashMap、hashtable、ConcurrentHashMap)
鹤野云间
博客等级 码龄9年 4粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值