[技术问答] 排序算法中,最优的是哪个?

[复制链接]
 楼主| 598330983 发表于 2023-2-20 21:21 | 显示全部楼层 |阅读模式
快速排序法(Quick Sort)是目前为止最优的排序算法。它能够在最坏情况下运行时间复杂度也只有O(nlog n) ,因此它比其他排序算法要快得多。这意味着它在同样输入大小的情况下,会比其他算法运行得更快,并且用更少的处理力来完成任务。
  1. #include <stdio.h>

  2. int main()
  3. {
  4.   int array[20], n, c, d, swap;

  5.   printf("Enter number of elements\n");
  6.   scanf("%d", &n);

  7.   printf("Enter %d integers\n", n);

  8.   for (c = 0; c < n; c++)
  9.     scanf("%d", &array[c]);

  10.   for (c = 0 ; c < ( n - 1 ); c++)
  11.   {
  12.     for (d = 0 ; d < n - c - 1; d++)
  13.     {
  14.       if (array[d] > array[d+1]) /* For decreasing order use < */
  15.       {
  16.         swap       = array[d];
  17.         array[d]   = array[d+1];
  18.         array[d+1] = swap;
  19.       }
  20.     }
  21.   }

  22.   printf("Sorted list in ascending order:\n");

  23.   for ( c = 0 ; c < n ; c++ )
  24.      printf("%d\n", array[c]);

  25.   return 0;
  26. }
快速排序法的实现原理
快速排序法是一种分治算法。它的基本步骤如下:
在数组中选择一个元素当做一个基准点 (pivot)
把数组中小于基准点的元素移动到基准点之前,大于基准点元素移动到基准点之后
对左右子数组分别重复这些步骤,直到所有数组都有序为止

guijial511 发表于 2023-2-21 07:39 来自手机 | 显示全部楼层
我记得大学C语言教程里面有个章节就是讲排序算法的
OKAKAKO 发表于 2023-2-21 09:21 | 显示全部楼层
适用领域Pascal,c++等语言,是对冒泡排序算法的一种改进
jf101 发表于 2023-2-21 16:40 来自手机 | 显示全部楼层
实际上是在冒泡排序基础上的递归分治法
yangxiaor520 发表于 2023-2-22 10:24 来自手机 | 显示全部楼层
排序算法还是很多
小夏天的大西瓜 发表于 2023-2-22 15:11 | 显示全部楼层
这是公认的好的排序法之一,很好用
小小蚂蚁举千斤 发表于 2023-2-23 16:03 | 显示全部楼层
冒泡 选择 希尔 插入 归并 快速 堆 桶 计数 基数一共十种呢
玛尼玛尼哄 发表于 2023-2-23 21:46 | 显示全部楼层
比冒泡快。
玛尼玛尼哄 发表于 2023-2-23 21:46 | 显示全部楼层
冒泡好像是最慢的,但是也最好理解。
玛尼玛尼哄 发表于 2023-2-23 21:47 | 显示全部楼层
其实人的思维我觉得更像冒泡法。
AdaMaYun 发表于 2023-2-24 13:40 | 显示全部楼层
排序方法的选取主要考虑算法的性能与资源占用。也就是速度和占用的存储空间。
 楼主| 598330983 发表于 2023-2-26 21:48 | 显示全部楼层
算法课上都学过这个吧。
星辰大海不退缩 发表于 2023-2-27 15:22 | 显示全部楼层
一个排序算法受很多因素的影响,很难从一个角度说最优
LOVEEVER 发表于 2023-2-28 13:11 | 显示全部楼层
冒泡确实最好理解,快速算是用的多的
中国龙芯CDX 发表于 2023-2-28 14:05 | 显示全部楼层
排序算法还是比较多的,一般新手冒泡排序简单更容易理解,快速排序省事省力
小小蚂蚁举千斤 发表于 2023-2-28 15:41 | 显示全部楼层
快速算是比较常用好用的,省力一点
AloneKaven 发表于 2023-3-1 19:44 | 显示全部楼层
应该没有最优的算法,看不同的应用场景选择吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

266

主题

5573

帖子

22

粉丝
快速回复 在线客服 返回列表 返回顶部