常用排序算法

Java常用排序算法 阅读详情

1.选择排序

1.1. 思想:选择数组中的最小值与数组中第一个数字交换,然后找剩余数的最小值与第二个数字交换,以此类推。

1.2. Java代码实现

 

  public void selectSort() {
        int a[] = { 1, 54, 6, 3, 78, 34, 12, 45 };
        int pos= 0;
        for (int i = 0; i < a.length; i++) {
            int j = i + 1;
            pos = i;
            int temp = a[i];
            for (; j < a.length; j++) {
                if (a[j] < temp) {
                    temp = a[j];
                    pos = j;
                }
            }
            a[pos] = a[i];
            a[i] = temp;
        }
        for (int i = 0; i < a.length; i++)
            //;仅仅用于分隔数字
            System.out.print(a[i]+";");
    }


2.冒泡排序

2.1. 思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。每次冒出一个数,冒出的数不参与下一次冒泡。

2.2. java代码实现

public class MP {
    public static void main(String[] args) {
        int [] arr = { 18,49, 38, 65, 97, 76, 13,11,5};
        for(int i=0;i<arr.length-1;i++){
            for(int j=0;j<arr.length-1-i;j++){
                if(arr[j]>arr[j+1]){
                    int temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        for(int i:arr){
            System.out.print(i+",");
        }
    }
}


3.快速排序

3.1 思想:选择其中一个值作为基准值,一般选第一个或者最后一个,在此选第一个为基准值,第一组下来把比基准值小的放到左侧,大的放到右侧,然后利用递归再分别对小的一侧和大的一侧进行排序。

3.2 java代码实现

package demo;

import org.junit.Test;

/**
 * 快速排序升序
 * @author Administrator
 *
 */

public class KS {
    @Test
    public void test(){
        int [] arr = { 18,49, 38, 65, 97, 76, 13,11,5};
        quickSort(arr, 0, arr.length-1);
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+",");
        }
    }
    public int getMiddle(int[] arr,int low,int high){
        int temp=arr[low];//把第一个值作为基准
        while(low<high){//没有对比完
            while(low<high&&arr[high]>=temp){//高位的大于基准值
                high--;//向左一个数字对比
            }
            arr[low]=arr[high];//把高位的换到低位去
            while(low<high&&arr[low]<=temp){
                low++;
            }
            arr[high]=arr[low];
        }
        arr[low]=temp;
        return low;
    }
    public void quickSort(int[]arr,int low,int high){
        if(low<high){
            int middle = getMiddle(arr,low,high);
            quickSort(arr, low, middle-1);
            quickSort(arr, middle+1, high);
        }
    }

}

4.二分法排序

4.1.思想:在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们 中间的那个元素比,如果小,则对前半再进行折半,否则对后半 进行折半,直到left>right,然后再把第i个元素前1位与目标位置之间 的所有元素后移,再把第i个元素放在目标位置上。

package demo;

import org.junit.Test;

public class EF {
	@Test
	public void test1(){
		EF e = new EF();
		int [] arr = {5,45,12,5,36,2,1,8,9};
		e.DichotomySort(arr);
		for(int i:arr){
			System.out.println(i);
		}
	}
	public static void DichotomySort(int[] array)  
    {  
        for (int i = 0; i < array.length; i++)  
        {  
            int start = 0;  

            int end = i - 1;  

            int middle = 0;  

            int temp = array[i];  

            while (start <= end)  
            {  
                middle = (start + end) / 2;  

                if (array[middle] > temp)//要排序元素在已经排过序的数组左边  
                {  
                    end = middle - 1;  
                }  
                else  
                {  
                    start = middle + 1;  
                }  
            }  
            for (int j = i - 1; j > end; j--)//找到了要插入的位置,然后将这个位置以后的所有元素向后移动  
            {  
                array[j + 1] = array[j];  
            }  

            array[end + 1] = temp;  

        }  
    } 

}


C#与Lua交互原理 以前每一次研究一些新知识并且有所收获的时候,都想写一篇博客来分享这种自己的收获。 一直没有写主要是因为自己水平太菜了,怕写出来贻笑大方,最近想通了,想写就写下来,就算对别人毫无用处,还可以自己没事翻翻,省得自己都忘了。当然如果能对你有一丝丝的帮助,那真是再好不过了 。本文将针对C#与Lua的调用原理阐述一些个人的心得 。 Lua开发环境搭建 有关于VS &amp... 阅读详情

相关推荐

STM32驱动WS2812B实现音乐频谱可视化系统

本文详细介绍了基于STM32驱动WS2812B灯带实现音乐频谱可视化系统的设计与实现。通过FFT算法实时分析音频信号,将频谱映射到炫彩灯光控制系统,结合PWM和DMA技术实现低延迟响应。系统支持多模式切换和动态亮度调节,适用于创意灯光秀和智能家居场景。

weixin_29171129的博客 301

常用排序算法的java实现

/** * 冒泡排序 * 时间复杂度: 最小 = O(n), 最大 = O(n^2), 平均 = O(n^2) * * @param data 待排序序列 * @return */ public static int[] bubbleSort(int[] data) { if (data == null || data.length == 0 || data.length =...

LittleBeen 288

STM32平台下FreeModbus TCP协议栈集成指南

深入讲解在STM32平台如何移植和配置freemodbus协议栈,实现TCP通信功能。结合嵌入式开发细节,帮助开发者快速掌握freemodbus的应用与调试技巧。

weixin_36001279的博客 1142

常用排序算法一览表

常用排序算法 类别 排序方法 时间复杂度 空间复杂度 稳定性 平均情况 最好情况 最坏情况 辅助存储 冒泡排序 直接...

墨、砚 257

【ESP32】1.编译、烧录、创建工程

本文介绍了在VSCode中搭建ESP32开发环境并烧录"Hello World"工程的过程。首先通过串口工具成功下载固件后,解决了OpenOCD报错问题。针对头文件无法识别的问题,修改了c_cpp_properties.json配置文件,调整了编译器路径和IntelliSense模式。文章还详细说明了创建新工程的步骤,包括选择芯片型号和项目模板,并验证了串口打印功能。最后提醒在项目构建时要等待完成,避免文件缺失。整个流程涵盖了环境搭建、代码烧录、调试及新项目创建等关键环节。

梁山1号 1483

网络安全 | 企业网络安全的十大挑战及解决方案

网络安全 | 企业网络安全的十大挑战及解决方案,随着信息技术的飞速发展,企业数字化转型进程不断加速,网络安全问题日益成为企业运营与发展面临的关键挑战。本文深入剖析企业网络安全的十大挑战,包括网络攻击日益复杂、数据泄露风险、内部威胁、物联网安全、云安全、合规性要求、移动办公安全、供应链安全、人才短缺以及安全预算有限等,并针对每个挑战详细阐述相应的解决方案,旨在为企业构建全面、有效的网络安全体系提供指导与参考,助力企业在复杂多变的网络环境中保障自身信息资产安全,实现可持续发展。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 4万+

常用八个排序算法性能总结

常用八个排序算法性能比较

菜鸟502的博客 429

【camera-radar】基于ROS的多传感器融合感知系统实现(雷达+相机)(2)

实现功能:代码下载地址:下载地址 1)基于深度学习的目标检测;2)基于雷达的距离估计和预测;3)多传感器感知结果融合模块。 相机感知模块解析 4. Run nodes: python3 fusion_node/main.py python3 gps_node/main.py python3 radar_node/main.py python3 2d_detection_node/main.py #(additional instructions in 2d_detection_node/README.m

踟蹰横渡口,彳亍上滩舟。 9948

常用排序算法的复杂度总结

常用排序算法的复杂度归纳:

汝南张公子的博客 362

基于 ESP32-CAM 与 TinyML 的食堂餐盘自动识别与营养分析终端

【代码】基于 ESP32-CAM 与 TinyML 的食堂餐盘自动识别与营养分析终端。

weixin_42300449的博客 165

Qt CEF融合技QCefView使用教程

如果从事C++客户端开发,对CEF应该不陌生,当C++界面需要和web交互时,CEF是很好的解决方案,当然Qt也提供了QWebEngineView来进行web交互,最近在万兴喵影的安装目录看到了QCefView.dll,之前也听说过这个库,没在意,没想到还真有人用到项目里面,于是决定自己编译写个demo看看......

琅嬛福地 1万+

Python常用的排序算法

常用的排序算法 拿li=[1,3,45,6,78,9,4]来举例 一.冒泡排序 空间复杂度O(n的2次方) 原理:例如你把一组数据从头开始依次遍历过去把最大的或者最小的放在末尾,除了最后一个每个依次进行遍历 def bubble_sort(li): for i in range(len(li)-1): flag = True for j in range(l...

转行程序员 217

打开.nc降水气象数据制作年降水量地图

图层的单位为度,在反距离插值中也是以度为单位,比较麻烦,还是想用以m为单位的投影,这里是个bug,后续调整一下。该彩色部分是以2021年1月、2月、3月的降水数据分别作为RGB得到。因为该栅格的分辨率还是太大了,一个栅格就能覆盖一个县,若想要进行降尺度,可以做插值处理。下载的数据集为2021-2022年,因此有12+12=24个月,24个波段。想要得到廊坊市周围的数据,需要裁剪范围,在降水数据图层上导出数据。打开数据管理工具-投影和变换-定义投影。在降水数据图层上右击属性,添加投影。得到了降尺度的插值图。

所有专家都曾始于新手 4518

常用排序算法思维导图

常用排序算法思维导图

解忧swag的博客 417

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

常用排序算法总结

 https://www.cnblogs.com/eniac12/p/5329396.html 目录 冒泡排序   鸡尾酒排序   选择排序 插入排序 二分插入排序   希尔排序   归并排序 堆排序 快速排序   我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。   排序算法大体可分为两种:     一种是比较排序,时间复杂度...

宁静致远 404

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

常用的排序算法

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

日暮南城故里的博客 2158

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

比较常用的排序算法总结

常用的排序 冒泡排序 选择排序 插入排序 桶排序 希尔排序 归并排序 快速排序 基数排序 堆排序 第一 冒泡排序 由于简单直接上代码 for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ if(a[i]>a[j]) swap(a[i],a[j]);//当前的数大于后面的数,交换 } } 第二 选择排序 每次找到数组中最大或最小的数,将他与前面的数交换 for(int i=1;i<n;i++){ mina=-1;//更新

qq_44665427的博客 256

常用排序算法性能对比

排序算法常用排序算法性能对比冒泡排序 常用排序算法性能对比 冒泡排序

weixin_43250841的博客 111

8种常用的排序算法

8种常用的排序算法 数据结构中的排序是非常重要的知识,将数据排序是处理数据的基本起手操作。从类型上分排序可以分为内部排序和外部排序,对保存在内存中的数据进行排序成为内部排序,对保存在磁盘上的数据排序称为外部排序。 本文将对内部排序常用的8中排序做一个简单介绍,作为一个程序员,需要熟练掌握这8种常用的排序,理解其排序思想,并能以代码实现。 8种排序中的时间复杂度和空间复杂度一览 可以...

pan16309的博客 1590

常用的排序算法及Python实现

2. **选择排序**(Selection Sort)3. **插入排序**(Insertion Sort)7. **计数排序**(Counting Sort)1. **冒泡排序**(Bubble Sort)4. **归并排序**(Merge Sort)5. **快速排序**(Quick Sort)8. **桶排序**(Bucket Sort)9. **基数排序**(Radix Sort)6. **堆排序**(Heap Sort)你可以根据具体需求选择合适的排序算法。### 1. 冒泡排序。

Zero_pl的博客 362

各种常用排序算法复杂度汇总

该表格内基本涵盖了所有常用排序算法的时间复杂度和空间复杂度。  

qq_41506665的博客 394

python实现常用排序算法_Python实现的几个常用排序算法实例

#encoding=utf-8import randomfrom copy import copydef directInsertSort(seq):""" 直接插入排序 """size = len(seq)for i in range(1,size):tmp, j = seq[i], iwhile j > 0 and tmp < seq[j-1]:seq[j], j = seq[j-...

weixin_39979332的博客 90

Python常用排序算法

首先任意选取一个元素作为基准数据,将待排序列表中的数据分割成独立的两部分,比基准数据小的放在它左边,比基准数据大的放在它右边,此时第一轮数据排序完成。选择排序是一种简单直观的排序算法,它的工作原理是每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排序完毕。冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻的元素,如果他们的顺序错误就交换他们。排序后为: [2, 24, 45, 66, 75, 90, 170, 802]

大人的博客 866

八种常用排序算法总结

八种常用排序算法分类时间复杂度、空间复杂度及稳定性分析不同应用场景下的排序算法选择1、数据规模较小待排序列基本序的情况下,可以选择直接插入排序;对稳定性不作要求宜用简单选择排序,对稳定性有要求宜用插入或冒泡2、数据规模不是很大完全可以用内存空间,序列杂乱无序,对稳定性没有要求,快速排序,此时要付出log(N)的额外空间;序列本身可能有序,对稳定性有要求,空间允许下,宜用归并排序3、数据规模很大对稳...

当下 1958

面试常用排序算法

面试常用手撸排序算法代码 代码 #include &amp;amp;lt;stdio.h&amp;amp;gt; #include &amp;amp;lt;stdlib.h&amp;amp;gt; #include &amp;amp;lt;string.h&amp;amp;gt; // Bubble sort (O(n^2)) void BubbleSort(int* a, int len) { int i, j, temp;

tianxieeryang的博客 508
下一篇: 文件下载
挖坑专业
博客等级 码龄10年 5粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值