初学算法之分治---快速排序

简介: 初学算法之分治---快速排序
/**
 * @ClassName 快速排序
 * @Author ACER
 * @Description
 * 第一遍遍历作用是先将k=array[start]放置于数组中间左右两             边  分别小于k和大于k
 *遍历方法:数组头尾放一个指针,当两个这个指针数据不同时判断两个数大小交换位置
 * 如果符合大小顺序则移动指针 直到不同大小
 * 一回合结束后 ,递归以k为中点,左右递归。
 * @Date 2021/7/10 21:38
 * @Version 1.0
 **/
public class 快速排序 {
    public static void main(String[] args) {
        int []array={0,1,0,4,2};
        quickSort(array,0,array.length-1);
        for (int i : array) {
            System.out.println(i);
        }
    }
    public static void quickSort(int []nums,int start,int end){
                if (start>=end){
                    return;
                }
                int k=nums[start];
                int i=start;
                int j=end;
                while(i!=j){
                    while (j>i&&nums[j]>=k){
                        j--;
                    }
                    //交换两者位置
                    int temp=0;
                    temp=nums[j];
                    nums[j]=nums[i];
                    nums[i]=temp;
                    while (j>i&&nums[i]<=k){
                        i++;
                    }
                    //交换i j
                    temp=nums[j];
                    nums[j]=nums[i];
                    nums[i]=temp;
                }
                quickSort(nums,start,i-1);
                quickSort(nums,i+1,end);
    }
}
相关文章
|
10月前
|
算法 搜索推荐 Java
算法系列之分治算法
分治算法(Divide and Conquer)是一种解决复杂问题的非常实用的策略,广泛应用于计算机科学中的各个领域。它的核心思想是将一个复杂的问题分解成若干个相同或相似的子问题,递归地解决这些子问题,然后将子问题的解合并,最终得到原问题的解。分治算法的典型应用包括归并排序、快速排序、二分查找等。
362 72
 算法系列之分治算法
|
搜索推荐 C语言
【排序算法】快速排序升级版--三路快排详解 + 实现(c语言)
本文介绍了快速排序的升级版——三路快排。传统快速排序在处理大量相同元素时效率较低,而三路快排通过将数组分为三部分(小于、等于、大于基准值)来优化这一问题。文章详细讲解了三路快排的实现步骤,并提供了完整的代码示例。
451 4
|
8月前
|
算法 搜索推荐
快速排序-数据结构与算法
快速排序(Quick Sort)是一种基于分治法的高效排序算法。其核心思想是通过选择基准(pivot),将数组划分为左右两部分,使得左侧元素均小于基准,右侧元素均大于基准,然后递归地对左右两部分进行排序。时间复杂度平均为 O(n log n),最坏情况下为 O(n²)(如数组已有序)。空间复杂度为 O(1),属于原地排序,但稳定性不佳。 实现步骤包括编写 `partition` 核心逻辑、递归调用的 `quickSort` 和辅助函数 `swap`。优化方法有随机化基准和三数取中法,以减少最坏情况的发生。
592 13
|
存储 搜索推荐 Python
用 Python 实现快速排序算法。
快速排序的平均时间复杂度为$O(nlogn)$,空间复杂度为$O(logn)$。它在大多数情况下表现良好,但在某些特殊情况下可能会退化为最坏情况,时间复杂度为$O(n^2)$。你可以根据实际需求对代码进行调整和修改,或者尝试使用其他优化策略来提高快速排序的性能
295 61
|
12月前
|
供应链 算法
【算法】——快排,分治算法合集
本文主要介绍排序中的快排思想的应用,做到一法通万法的效果
164 16
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
273 2
|
算法 搜索推荐 Shell
数据结构与算法学习十二:希尔排序、快速排序(递归、好理解)、归并排序(递归、难理解)
这篇文章介绍了希尔排序、快速排序和归并排序三种排序算法的基本概念、实现思路、代码实现及其测试结果。
452 1
|
搜索推荐
冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析
冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析
257 1
|
搜索推荐 Java Go
深入了解快速排序算法
深入了解快速排序算法
345 2
|
存储 搜索推荐 算法
【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析
【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析

热门文章

最新文章