分别用C和Java实现快速排序

排序算法(六)快速排序--C++/JS/PYTHON/GO/JAVA/PHP实现 快速排序 原文链接:https://blog.youkuaiyun.com/sylucky/article/details/86501575 欢迎访问我的专栏:https://zhuanlan.zhihu.com/sylucky 总能找到你感兴趣的技术,同时也欢迎投稿。 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比... 阅读详情

C语言版本(借鉴其他博客)

#include<stdio.h>
int partition(int pArr[], int low, int high)
{
	int pivot = pArr[low];
	while (low < high)
	{
		while (low<high&&pArr[high] >= pivot) high--;
		pArr[low] = pArr[high];
		while (low<high&&pArr[low] <= pivot) low++;
		pArr[high] = pArr[low];
	}
	pArr[low] = pivot;
	return low;
}
void Quick_sort(int pArr[], int low, int high)
{
	int keyPos = 0;
	if (low<high)
	{
		keyPos = partition(pArr, low, high);
		Quick_sort(pArr, low, keyPos - 1);
		Quick_sort(pArr, keyPos + 1, high);
	}
}
int main(int argc, char**argv)
{
	//int arr[] = { 49,38,65,97,76,13,27,49 };
	int arr[] = { 32,34,65,9,76,13,27,49 };
	/*注意size-1*/
	Quick_sort(arr, 0, sizeof(arr) / sizeof(arr[0]) - 1);
	for (int i = 0; i<sizeof(arr) / sizeof(arr[0]); i++)
	{
		printf("%2d ", arr[i]);
	}
	getchar();
	return 0;
}

运行结果:


Java

public class Qsort {
    private static int partition(int[] arr,int low,int high) {
        int t = arr[low];
        while(low<high) {
            while(low<high && arr[high]>=t)
                high--;
            arr[low]=arr[high];
            while(low<high && arr[low]<=t)
                low++;
            arr[high]=arr[low];
        }
        arr[low]=t;
        return low;
    }
    public static void qsort(int[] arr,int low,int high) {
        int part=0;
        if (low<high) {
            part=partition(arr,low,high);
            qsort(arr,low,part-1);
            qsort(arr,part+1,high);
        }
    }
    public static void main(String[] args) {
        int[] arr= {32,34,65,9,76,13,27,49};
        qsort(arr,0,arr.length-1);
        for(int i=0;i<arr.length;i++) {
            System.out.println(arr[i]);
        }
    }
}

运行结果:


如果你有疑惑,请与我联系chl.ai@outlook.com

JAVA实现快速排序 java实现的快速排序算法 立即下载

相关推荐

java实现快速排序

快速排序是一个知名度极高的排序算法,其对于大数据的优秀排序性能和相同复杂度算法中相对简单的实现使它注定得到比其他算法更多的宠爱。这里采用简单的小例子实现快速排序。

Java 七大排序之快速排序(三种方法包含优化方法)

1. 快速排序整体的综合性能和使用场景都是比较好;2.时间复杂度:O(N*logN) 空间复杂度:O(logN);3.稳定性:不稳定。

m0_56911648的博客 1万+

大疆 DJI Mobile SDK实战指南——从零构建Android示例开发环境

本文提供了一份详尽的DJI Mobile SDK Android开发环境搭建实战指南。文章手把手教你从注册开发者账号、获取App Key,到配置Android Studio、下载官方示例代码,最终成功运行DJI官方Android示例程序,帮助开发者快速入门无人机应用开发,避开常见编译与依赖问题。

weixin_29188043的博客 274

java 实现快速排序

1.介绍 快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一 部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序 过程可以递归进行,以此达到整个数据变成有序序列。 2.切分原理 切分原理: 把一个数组切分成两个子数组的基本思想: 1.找一个基准值,用两个指针分别指向数组的头部和尾部; 2.先从尾部向头部开始搜索一个比基准值小或等于的元素,搜索到即停止,并记录指针的位置; 3.再从头部向尾..

m0_46306264的博客 1万+

keil软件调试(Debug)仿真教程(软件调试和硬件调试的区别)及常用调试按键详解

单片机的调试分为两种,一种是使用软件模拟调试,第二种是硬件调试,两种调试方式各有不同,软件模拟调试有误差,而硬件调试,借用仿真器调试是嵌入式开发中常用方法。

weixin_51624736的博客 3万+

AWR2243的等效相位中心与虚拟通道

在俯仰维方向上,不重合的虚拟通道有8个,排序为1:4,9:12。每个虚拟阵元之间的间隔为lambda/2。实际y轴方向虚拟阵列只跨越了8*lambda/2的距离。等效相位中心与虚拟通道类似,只是每个相位中心之间间隔为lambda/4,实际y轴方向等效相位中心只跨越了8*lambda/4=7.59mm的距离

qq_50974341的博客 1981

Java 快速排序

快速排序是一种常用的基于比较的排序算法,其时间复杂度为 O(nlogn),并且具有稳定性和广泛的应用场景。本文将全面详细的讲解一下 Java 中快速排序算法的原理、实现以及时间复杂度等问题。

兴趣是最好的老师,勤能补拙 1万+

YOLOv12创新改进 | 全网独家创新篇、小目标检测改进 | AAAI 2025 | 引入HS-FPN中的HFP和SDP创新点,从频域增强小目标特征,淘汰FPN进行升级,助力YOLOv12有效涨点

本文提出了HS-FPN(高频和空间感知特征金字塔网络),通过HFP(高频感知)模块增强小目标特征,SDP(空间依赖感知)模块捕获像素间空间依赖关系。实验在AI-TOD等小目标数据集上验证了该方法的有效性,相比FPN显著提升检测性能。文章详细介绍了HS-FPN的网络结构、核心代码实现及在YOLOv12中的应用方法,并提供多种改进版本的yaml配置文件,为小目标检测任务提供了有效的解决方案。

Ai缝合怪、助力小伙伴高效发论文 338

Java快速排序

前后相邻的两个数两两进行交换,如果前面的数大于后面的就交换,否则不交换,直到最大的数到达最后,循环这一过程直至全部排序完成。一趟遍历下来排好了7的位置,然后再从头开始这次只需要拍好7前面的数组就好了,每次循环中最大的那个数,都会排好位置,就像一个气泡一个一个的到达排好的位置,所以叫做冒泡排序。

G81948577的博客 8375

Cadence PSpice 仿真6:反向放大器傅里叶仿真(FFT,谐波分析)实战图文教程

总谐波失真(THD)指音频信号源通过功率放大器时,由于非线性元件所引起的输出信号比输入信号多出的额外谐波成分。比如理想运放输出为5V 1Khz的正玄波时,实际输出的信号按照傅里叶展开后不但含有5V 1KHZ的分量,还有1V 2KHZ的分量,那么多出来的1V的分量就是二次谐波,二次谐波失真系数就是20%,由于任意1个波形按照傅里叶展开是可以展开到n次的,所以除了二次谐波外,输出的信号还有3,4,5……n次谐波,随着n的变大谐波的分量会变小,总谐波失真系数就是所有谐波分量和1次谐波(基波)的比值。Cadence

fydar的博客 4956

手把手教你学simulink(69.3)--毫米波5G/6G 系统场景实例设计并实现基于Simulink的毫米波多用户MIMO通信系统模型

毫米波频段(30 GHz到300 GHz)因其高带宽和高速率特性,成为5G和未来6G通信系统的理想选择。然而,毫米波信号的传播特性较差,容易受到大气吸收、雨衰、建筑物遮挡等因素的影响。为了克服这些挑战并提高通信容量,多用户MIMO(MU-MIMO, Multi-User Multiple-Input Multiple-Output)技术被广泛应用。多用户MIMO技术通过在基站和多个用户之间同时传输多个数据流,充分利用空间资源,从而显著提升系统容量和频谱效率。

MHD0815的博客 493

【Java】快速排序

本文介绍了快速排序的原理优点,以及如何选取基准元素,交换元素的方法等。

zcxyywd的博客 2万+

Xilinx FPGA平台GTX简易使用教程(四)GTX IP核配置教程

干货来了,GTX IP核配置,搬砖全靠它~~

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 1万+

快速排序在C语言和java下的实现

1. 快排的原理 时隔多日我们在被要求去写一个快速排序的时候可能无从下手,对于一个算法的考单纯的记忆不足以牢牢掌握它,深刻理解其机制才是学习算法的重要手段。 下面我们来解读一下快速排序。 快速排序由东尼·霍尔所发展。快速排序通常明显比其他 Ο(nlogn) 算法更快。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)

qq_41098158的博客 295

cesium 实时轨迹

运用cesium中model和polyline添加模型和轨迹线,用CallbackProperty方法来实时改变经纬度。

God's asylum的博客 1964

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java、C语言实现快速排序算法

代码: #include #include int   findpivot(); int   partion (); void  quicksort (); int main() {     int n,i;     printf("请输入需要排序的元素的个数:");     scanf("%d",&n);     int a[n];     for(i = 0;i

即使没人看我也要写 744

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

快速排序算法(C & Java 实现)

C语言版  #include void disp_array( int a[], int n ) { int i; for( i = 0; i < n; ++i ) printf( "%d ", a[i] ); printf( "\n" ); } int partition( int a[], int low, int high ) { in

DUAN的专栏 873

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数据结构 c语言 java 实现快速排序

虽然用 c写的但是用了引用 要在c++环境中 跑 主要是结合 #include<stdio.h> #define MaxSize 20 //顺序表最大长度 typedef int KeyType; //typedef定义关键字类型为(int) typedef int InfoType; typedef struct { KeyType key; //关键字项 InfoType otherinfo; //其他数据项 }RedType; typedef s...

qq_19551571的博客 319

快速排序的Java语言与C语言实现

C语言版本: void sort(int *a, int left, int right) { if(left >= right)/*如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了*/ { return ; } int i = left; int j = right; int key = a[left];

匆匆那年 589

快速排序(java、python和c实现)

快速排序(java和c实现)

搭车去柏林的博客 691

快速排序的实现(C语言和Java实现)

基本思想: 确定一个基准值,通过一趟排序将要排序的数据分割成独立的两部分,左边的数据比指定的值小,右边的数据比指定的值大,然后再对左右两边分别进行递归 C语言实现: #include<stdio.h> void print(int a[],int n) { int i; for(i=0;i<n;i++) { printf("%d ",a[i]); } pr...

if_i_were_a的博客 156

数据结构排序-------快速排序(C,Java实现)

 1、快速排序简要概述   (1)快速排序(Quicksort)是对冒泡排序的一种改进。   (2)基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。  2、快速排序图解  3、代码实现 public class test { public static void main(String[] args) { int arr

IT优快云_的博客 447

快速排序算法Java实现,C语言实现

快速排序算法的C语言与Java实现

清歌寒 157

用Java、C++、python实现快速排序

一、Java实现 1.1 固定基准点的快排实现 快排的基本思路为先用某种方式设置一个基准点key(在此先选取输入数组的第一个数为基准点),再调用最核心的partition()函数分别从数组array的两端扫描数组,设两个指示标志(lo指向起始位置,hi指向末尾),首先从后半部分开始,不断前移hi的位置,如果发现有元素小于key,就将该值覆盖array[lo]的值(即array[lo] =...

离镜的博客 524

学习笔记:快速排序的C++、JavaScript(2种方法)、Java实现

参考链接:http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html 快速排序思想: (1)在数据集之中,选择一个元素作为”基准”(pivot)。 (2)所有小于”基准”的元素,都移到”基准”的左边;所有大于”基准”的元素,都移到”基准”的右边。 (3)对”基准”左边和右边的两个子集,不断重复第一步和第

peakchen90的博客 460

java开发C语言编译器:把C实现的快速排序算法编译成jvm字节码

把C语言实现的快速排序算法代码编译成java字节码

tyler_download的专栏 770
上一篇: Android屏蔽ListView的Item点击事件
下一篇: java实现多文件上传并保存到数据库
yuxi64
博客等级 码龄12年 7粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值