实现快速排序算法

这篇具有很好参考价值的文章主要介绍了实现快速排序算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.设计思路

快速排序算法通过多次比较和交换来实现排序,其排序流程如下:
(1) 首先设定一个分界值,通过该分界值将数组分成左右两部分。
(2) 将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。
(3) 然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。
(4) 重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。

2.源代码

#include<stdio.h>
int main()
{
	void quicksort(int a[],int left,int right);      //函数声明
	int i,a[10];
	printf("输入10个整数:\n");
	for(i=0;i<10;i++)
		scanf("%d",&a[i]);
	quicksort(a,0,9);
	for(i=0;i<10;i++)
		printf("%5d",a[i]);
	printf("\n");
	return 0;
}
void quicksort(int a[],int left,int right)       //函数实现快速排序
{
    int i=left;
	int j=right;
	int key=a[left];
	if(left>=right)		/*如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了*/
	{
		return;
	}
	while(i<j)
	{
		while(i<j && key<=a[j])
			j--;	        //向前寻找
		a[i]=a[j];	      //找到一个这样的数后就把它赋给前面的被拿走的i的值
		while(i<j && key>=a[i])		   //这是i在当组内向前寻找
			i++;
		a[j]=a[i];		    //当在当组内找完一遍以后就把中间数key回归
	}
	a[i]=key;
	quicksort(a,left,i-1);  //最后用同样的方式对左边的小组进行同上的做法
	quicksort(a,i+1,right);
}

3.运行结果

输入10个整数:
12 43 8 56 91 17 25 65 9 69
8 9 12 17 25 43 56 65 69 91
(以上为运行结果,第二行为输入的十个整数,第三行为排列好的序列。)
实现快速排序算法,排序算法,算法,c语言文章来源地址https://www.toymoban.com/news/detail-568046.html

到了这里,关于实现快速排序算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【排序算法】快速排序(C语言)

    【排序算法】—— 快速排序 ​ 快速排序的单趟排序是以一个数作为基准值,实现将数组中比基准数小的数放在基准值的左侧,比基准值大的数放在基准值的右侧。 ​ 我们共有3种实现方法。 ​ 霍尔是最初发现快速排序的人,它使用的单趟排序算法被称为霍尔法。 ​ 用ke

    2024年02月16日
    浏览(47)
  • 快速了解四种排序算法:希尔排序,堆排序,快速排序,冒泡排序(c语言)

     一个程序员一生中可能会邂逅各种各样的算法,但总有那么几种,是作为一个程序员一定会遇见且大概率需要掌握的算法。 1.1算法(algorithm ) 是指令的集合,是为解决特定问题而规定的一系列操作。 它是明确定义的可计算过程,以一个数据集合作为输入,并产生一个数据

    2024年02月16日
    浏览(51)
  • 排序算法-快速排序(含C语言代码示例)

            快速排序(QuickSort)是一种常用的高效排序算法,由Tony Hoare在1960年提出。它采用分治法(Divide and Conquer)策略,通过将原始数组分成较小的子数组来解决排序问题。下面是对快速排序的详细介绍:         ①选择基准元素: 从数组中选择一个基准元素(pivot)。

    2024年01月17日
    浏览(45)
  • 【排序】快速排序(C语言实现)

          快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为: 任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复

    2024年01月17日
    浏览(35)
  • 【经典题】跟着凡人玩转C语言之快速排序算法

     💘作者:你我皆为凡人  💘博客主页:你我皆为凡人的博客  💘名言警句:时间不会为任何人停留,而事物与人,无时不刻也在变化着。每一个人,也都在不停向前!  💘觉得博主文章写的不错的话,希望大家三连(✌关注,✌点赞,✌评论),多多支持一下!!  💘其他作

    2023年04月11日
    浏览(39)
  • 排序算法-----快速排序(非递归实现)

    目录 前言 快速排序  基本思路  非递归代码实现 算法分析 空间复杂度 时间复杂度 稳定性         很久没跟新数据结构与算法这一栏了,因为数据结构与算法基本上都发布完了,哈哈,那今天我就把前面排序算法那一块的快速排序完善一下,前面只发布了快速排序递归算法

    2024年01月21日
    浏览(41)
  • 【排序算法】深入理解快速排序算法:从原理到实现

    目录 1. 引言 2. 快速排序算法原理 3. 快速排序的时间复杂度分析 4. 快速排序的应用场景 5. 快速排序的优缺点分析 5.1 优点: 5.2 缺点: 6. Java、JavaScript 和 Python 实现快速排序算法 6.1 Java 实现: 6.2 JavaScript 实现: 6.3 Python 7. 总结        快速排序是一种经典的排序算法,它的

    2024年03月20日
    浏览(46)
  • 【排序算法】 快速排序(快排)!图解+实现详解!

    🎥 屿小夏 : 个人主页 🔥个人专栏 : 算法—排序篇 🌄 莫道桑榆晚,为霞尚满天! 什么是快排?快排的速度到底有多快呢?它们的思想和实现是什么样的? 本文会对这快速排序进行详解,绝对细致入微!让你彻底搞懂快排! 英国计算机科学家Tony Hoare在1960年为了解决计算

    2024年02月05日
    浏览(40)
  • 排序算法 - 快速排序(4种方法实现)

    本篇文章的源代码在这,需要自取:Gitee 快速排序是一种常见的排序算法,其基本原理是分治和递归。它的基本思路是,在数组中选择一个元素作为基准值,然后将数组中小于基准值的元素移动到它的左边,大于基准值的元素移动到它的右边。然后对左右两个子数组递归地重

    2024年02月04日
    浏览(41)
  • 快速排序—C语言实现

    目录 前言 快速排序 实现逻辑 1. hoare版本​编辑 2. 挖坑法 3. 前后指针版本 快速排序优化 1. 三数取中法选key 2. 递归到小的子区间时,可以考虑使用插入排序 快速排序非递归(用栈实现) 快速排序的特性总结  全部代码         🥰在学数据结构的第一节课就知道了数据结

    2024年02月13日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包