浅谈排序——快速排序(最常用的排序)

快速排序(Quick Sort)是一种常见的排序算法,由英国计算机科学家东尼·霍尔(Tony Hoare)在1960年发明。这是一种分治算法,基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

快速排序算法在平均状况下,排序 n 个项目要 Ο(n log n) 次比较。在最坏状况下则需要 Ο(n^2) 次比较,但这种状况并不常见。实际上,快速排序通常明显比其他 Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地达成。

快速排序的一个优点是它是不稳定的排序算法,意味着相同的元素在排序后可能会保持其原有的顺序。

下面是一个伪代码示例:

快速排序(数组 a, 长度 n)
    如果 n > 1
        选择 a[1] 作为基准值
        左 = 1
        右 = n

        当 左 <= 右
            当 a[右] >= 基准值
                右 = 右 - 1
            当 a[左] <= 基准值
                左 = 左 + 1

        交换 a[左] 和 a[右]

        快速排序(a, 左, 右)
 

在这个算法中,我们选择数组的中位数作为基准值,然后将数组分为两部分,一部分是所有小于基准值的元素,另一部分是所有大于或等于基准值的元素。然后对这两部分递归地进行快速排序。

在实际应用中,快速排序是效率非常高的一种排序算法,尤其是在处理大量数据时。

ok,下面是代码

#include<stdio.h>
int a[100], n;
void qs(int left, int right)
{
	int i, j, t, temp;
	if (left > right)
		return;

	temp = a[left];
	 i = left;
	 j = right;
	while (i != j)
	{
		while (a[j] >= temp && i < j)
		{
			j--;
		}
		while (a[i] <= temp && i < j)
		{

			i++;
		}
		if (i < j)
		{
			t = a[i];
			a[i] = a[j];
			a[j] = t;
		}
	
	}	
	a[left] = a[i];
	a[i] = temp;

	qs(left, i - 1);
	qs(i + 1, right);
}

int main()//快速排序
{
	int i, j, t;
	scanf("%d", &n);
	for (int i =1; i <= n; i++)
	{
		scanf("%d", &a[i]);
	}

	qs(1, n);
	for (int i = 1; i <= n; i++)
	{
		printf("%d ", a[i]);
	}
	return 0;
}

相关推荐

  1. 排序——快速排序常用排序)

    2023-12-07 21:04:05       54 阅读
  2. 常见排序算法---快速排序算法

    2023-12-07 21:04:05       81 阅读
  3. 排序算法——快速排序

    2023-12-07 21:04:05       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-07 21:04:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-07 21:04:05       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-07 21:04:05       82 阅读
  4. Python语言-面向对象

    2023-12-07 21:04:05       91 阅读

热门阅读

  1. NGINX相关配置

    2023-12-07 21:04:05       52 阅读
  2. 使用Docker一键安装MySQL与Nginx脚本

    2023-12-07 21:04:05       51 阅读
  3. flink-cdc同步mysql到doris建设数据仓储最佳实践

    2023-12-07 21:04:05       63 阅读
  4. rabbitmq集群

    2023-12-07 21:04:05       65 阅读
  5. Flink优化——资源优化(一)

    2023-12-07 21:04:05       58 阅读
  6. 主流全文搜索方案对比

    2023-12-07 21:04:05       44 阅读
  7. UVa1339古老的密码题解

    2023-12-07 21:04:05       54 阅读
  8. Centos8安装Docker注意事项及原因

    2023-12-07 21:04:05       54 阅读
  9. Qt设置应用程序字体

    2023-12-07 21:04:05       57 阅读
  10. Rieds实战-Redis实现订阅发布

    2023-12-07 21:04:05       50 阅读
  11. Python高级数据结构——堆(Heap)

    2023-12-07 21:04:05       58 阅读