快速排序算法c语言lomuto,快速排序(N.Lomuto版)
这个版本的快速排序是由N.Lomuto提出来的。
基本排序步骤如下图所示:
/*
* 名 称: 快速排序
* 作 者: Brooke gao
* 日 期: 2013/6/17
*
*/
#include
#define SIZE 100
void swap(int *x, int *y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
int Partition(int *A, int p, int r)
{
int x, i, j;
x = A[r];
i = p - 1;
for(j = p; j <= r - 1; j++)
{
if(A[j] <= x)
{
i++;
swap(&A[i],&A[j]);
}
}
swap(&A[i+1],&A[r]);
return i+1;
}
void QuickSort(int *A, int p, int r)
{
int q;
if(p < r)
{
q = Partition(A,p,r);
QuickSort(A,p,q-1);
QuickSort(A,q+1,r);
}
}
void PrintResult(int *A, int size)
{
int i;
for(i = 0; i < size; i++)
{
printf("%-2d",A[i]);
}
putchar('\n');
}
int main(void)
{
int i, sum;
int A[SIZE];
printf("输入需排序的元素个数(0-100): ");
scanf("%d",&sum);
printf("请输入%d个元素:\n",sum);
for(i = 0; i < sum; i++)
{
scanf("%d",&A[i]);
}
QuickSort(A,0,sum-1);
printf("排序结果:\n");
PrintResult(A,sum);
}
快速排序算法c语言lomuto,快速排序(N.Lomuto版)相关推荐
- 快速排序算法-c语言实现,快速排序算法实现(C语言)(转)
快速排序算法 的基本思想是:将所要进行排序的数分为左右两个部分,其中一部分的所有数据都比另外一 部分的数据小,然后将所分得的两部分数据进行同样的划分,重复执行以上的划分操作,直 到所有要进行排序的数据 ...
- 快速排序算法C语言实现
快速排序算法C语言实现 在任何程序中,数组的排序都是极为重要的内容,我们需要按照业务需要对大量的数据进行排序,因此排序的速度或者说效率就显得极为重要了,因此选择一个效率较高的算法可以大大提升程序的性能 ...
- 快速排序实验报告 c语言,快速排序算法c语言实验报告.docx
快速排序算法c语言实验报告 实验六:冒泡法排序 物理学416班赵增月F12XX日期:XX年10月31日 一·实验目的1.熟练掌握程序编写步骤: 2.学习使用冒泡法和选择法排序: 3.熟练掌握数组的定义 ...
- 快速排序算法 c语言实现
快速排序是一种分治算法,它将一个数组分成两个子数组,将两个子数组分别排序,最终使得整个数组有序. 下面是一个 C 语言实现的快速排序算法: void quick_sort(int *arr, int ...
- 随机快速排序算法(C语言)
随机快速排序(C语言) 分治法基本思想 将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同.递归的解决这些子问题,然后将各个子问题的解合并得到原问题的解. 快速排序 原链 ...
- c语言快速排序案例,什么是快速排序?C语言数组快速排序例子
快速排序(Quick Sort)是一种有效的排序算法.虽然算法在最坏的情况下运行时间为O(n^2),但由于平均运行时间为O(nlogn),并且在内存使用.程序实现复杂性上表现优秀,尤其是对快速排序算法 ...
- 快速排序算法(C语言实现)
快速排序分三大步骤: 1.分:选择一个分割值并将数据按此分为左右两部分 2.治:分别在两部分用递归方式调用上述的分步骤,继续划分 3.合:对分割的部分排序直至完成 #include <stdio ...
- c语言排快速排序过程,C语言中快速排序法怎么排
快速排序法的排法:首先每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边:然后将大于等于基准点的数全部放到基准点的右边:最后在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之 ...
- python快速排序算法_Python实现快速排序算法及去重的快速排序的简单示例
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用. 该方法的基本思想是: 1.先从数列中取出一个数作为基准数. 2.分区过程,将比这个数大的数全放到它的右边,小于或 ...
最新文章
- unity3d游戏开发第2版 pdf_学开发2个月,1个人做出个TapTap排行榜第4的游戏?
- MYSQL 如果把数据文件保存到其他磁盘里
- Openresty (nginx + lua)
- 2016蓝桥杯省赛---java---C---8(冰雹数)
- concurrently同时开启多个监听服务
- php rpoplpush,RPOPLPUSH命令_视频讲解_用法示例-redis编程词典-php中文网
- java8 stream 做累加_《Java 8 in Action》Chapter 1:为什么要关心Java 8
- 2021年高考成绩什么时候查询辽宁,2021年辽宁高考成绩什么时候几点可以查
- 为什么 Redis 默认 16 个库?90%以上程序员不知道!
- Markdown 编辑器 Editor.md 预览
- Linux 系统SVN客户端安装-支持https
- jsp主板 jtp_HPlaserjtp1008不开机故障的检测与维修流程
- 计算机公式最小值,excel最小值函数
- 弹性伸缩定时任务支持Cron表达式
- IAPP视频教程全集
- 水果电商网站开发过程
- Go标准容器之Ring
- PS作业-Camera Raw滤镜练习
- 数据库设计之商品表分析2
- php 表格模板,怎么制作excel表格模板
热门文章
- CLion 下使用 Valgrind 内存检查 [Mac;Linux;Window多平台]
- 为什么说区块链是具有革命性意义的?
- ZeroMq的研究和使用
- python的函数代码块_Python从菜鸟到高手(8):print函数、赋值与代码块
- bcb series清除前面的点_新iPhone前面板曝光:丑刘海还在,但边框窄了
- java导出excel_纯干货:Java开源报表工具JasperReport使用
- mysql连接查询(内联)_MySQL之连接查询
- java中文乱码decode_JAVA中文字符乱码解决详解
- abb机器人伺服电机报闸是什么_ABB机器人电池更换时回零程序Reference
- python如何在文本内排序_在python中对文本文件中的项进行排序