首页 > 编程语言 >排序算法

排序算法

时间:2023-11-21 22:57:40浏览次数:25  
标签:end nums int length start 算法 array 排序

快速排序

package jh;

public class QuickSort {

    public static int partition(int[] array,int start,int end){
        int base = array[start];
        while (start < end){
            // 注意此处是有等号的,也就是说等于的时候不做移动(这点很重要,不然有可能会会陷入死循环!!!!!!!!!)
            while (start < end && array[end]>=base){
                end--;
            }
            array[start] = array[end];
            while (start <end && array[start]<=base){
                start++;
            }
            array[end] = array[start];

        }
        array[end] = base;
        return start;
    }


    public static int partition2(int[] array,int start,int end){
        int base = array[start];
        while (start < end){
            // 注意此处是有等号的,也就是说等于的时候不做移动(这点很重要,不然有可能会会陷入死循环!!!!!!!!!)
            while (start < end && array[end]>=base){
                end--;
            }
            swap(array,start,end);
            while (start <end && array[start]<=base){
                start++;
            }
            swap(array,start,end);

        }
//        array[end] = base;
        return start;
    }



    public static void quickSort(int[] array,int start,int end){
        if (start < end){
            int index = partition(array,start,end);
            quickSort(array,start,index-1);
            quickSort(array,index+1,end);
        }
    }

    public static void swap(int[] arr,int i,int j){
        int temp = arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
    }


    public static void main(String[] args) {
        int[] array = {2,4,6,1,3,5,23,98,13};
        quickSort(array,0,array.length-1);
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }
}

冒泡排序

public static void bubleSort(int[] nums){
        for (int i = 1; i < nums.length; i++) {
            for (int j = 0; j < nums.length-i; j++) {
                if (nums[j+1]<nums[j]){
                    swap(nums,j,j+1);
                }
            }
        }
    }

选择排序

    public static void selectSort(int[] nums){
        for (int i = 0; i < nums.length - 1; i++) {
            int minIndex = i;
            int min = nums[i];
            for (int j = i+1; j < nums.length; j++) {
                if(nums[j]<nums[i]){
                    min = nums[j];
                    minIndex=j;
                }
            }
            swap(nums,i,minIndex);
        }
    }

标签:end,nums,int,length,start,算法,array,排序
From: https://www.cnblogs.com/chenyi502/p/17847823.html

相关文章

  • 算法的奥秘:种类、特性及应用详解(算法导论笔记1)
    原文链接算法,是计算机科学领域的灵魂,是解决问题的重要工具。在算法的世界里,有着各种各样的种类和特性。今天,我将带各位踏上一段探索算法种类的旅程,分享一些常见的算法种类,并给出相应的实践和案例分析。希望通过本文的介绍,能够帮助您更好地理解和应用这些算法,提高解决问题的能力。......
  • 贝叶斯算法
    解决问题正向概率已知数据情况,求解某事件发生的概率逆向概率未知数据情况,通过实际观测数据去预估数据情况比较符合现实情况,正向概率主要应用于解决一些重复事件的概率问题,即这一次事件的发生和下一次发生没有本质上的区别而逆向概率主要是根据已发生事件去预测未发生......
  • 算法的奥秘:常见的六种算法(算法导论笔记2)
    算法的奥秘:种类、特性及应用详解(算法导论笔记1)上期总结算法的种类和大致介绍,这一期主要讲常见的六种算法详解以及演示。排序算法:排序算法是一类用于对一组数据元素进行排序的算法。根据不同的排序方式和时间复杂度,有多种排序算法。常见的排序算法包括冒泡排序、选择排序、插入......
  • 几种常见的排序算法总结
    常见的几种排序算法排序算法有很多,比较常见的有:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序等。并不是所有的都需要会。本文只会对其中部分算法进行总结。冒泡排序冒泡排序是一种比较简单的排序方法。也比较好理解,但是......
  • 10-基础SQL-DQL(数据查询语言)-排序查询(ORDER BY)
    DQL-介绍(常用)DQL英文全称是DataQueryLanguage(数据查询语言),数据查询语言用来查询数据库中表的记录查询关键字:SELECTDQL-语法......
  • [Qt] QTableView 点击左上角重新排序
    QSortFilterProxyModel的排序函数如果column是-1时可以重置通过findChild找到QTableView左上角的button//cornerbuttonoftableviewautocornerBtn=view->findChild<QAbstractButton*>();//donotselectallwhenclickedcornerBtn->disconnect();......
  • 羚通视频智能分析平台工地安全帽、反光背心AI智能算法检测系统算法识别
    羚通视频智能分析平台是一款专门用于工地安全帽和反光背心的AI智能检测系统算法识别的工具。该平台利用深度学习和计算机视觉技术,提供一种安全帽佩戴识别检测的智能算法方案,具有高精度检测、实时性强、可扩展性强、自定义配置和智能分析和预警等优点,能够满足工地安全管理的需求,提......
  • 羚通视频智能分析平台基于 AI 智能安防视频监控烟火识别、烟火检测算法分析
    羚通视频智能分析平台是一种基于先进的智能视频分析和深度学习技术的算法分析平台,专门致力于提供烟火识别检测的智能算法方案。这一方案具有高精度检测、实时性强、可扩展性强、智能分析和预警等优点,能够满足安防监控领域中对烟火检测的需求,有效提高监控效率和安全性。在实际应用中......
  • 羚通视频智能分析平台基于 AI 智能安防视频监控烟火识别、烟火检测算法分析
    羚通视频智能分析平台是一种基于先进的智能视频分析和深度学习技术的算法分析平台,专门致力于提供烟火识别检测的智能算法方案。这一方案具有高精度检测、实时性强、可扩展性强、智能分析和预警等优点,能够满足安防监控领域中对烟火检测的需求,有效提高监控效率和安全性。......
  • 图 - 拓扑排序 & 关键路径
    图-拓扑排序&关键路径拓扑排序AOV网DAG图:有向无环图AOV(ActivitiesOnVertexNetwork)网:用顶点表示活动,用弧表示活动间的优先关系的网.AOV网中不会出现自环(有向环),这意味着有的活动以他自己为前提。拓扑排序按照优先顺序对AOV网中的顶点进行排序使之形成一个线性序列。......