c - 如何获得快速排序深度?
问题描述
亚历克斯有一些不同高度的支柱。他正试图根据柱子的高度按降序排列。最近他学习了分治法(D&C)算法策略。Divide & Conquer 中有一个排序算法,其特殊情况是 f(n) = O(n^2)。所以,现在你必须帮助 Alex 使用特定的 D&C 算法对柱子进行排序。最后,您需要显示k,即排序所需的除法次数,并按降序显示高度。
输入:在第一行,你必须取柱子的数量,N (1<=N<=100),然后,在第二行,你必须取 N 个整数来表示柱子的高度。
输出:需要按降序显示k和柱子的高度
样本输入: 6 6 3 8 11 2 77 样本输出: 3 77 11 8 6 3 2
截图中的代码:
#include<stdio.h>
int k=0;
void swap(int *a, int *b)
{
int t=*a;
*a=*b;
*b=t;
}
int partition(int a[], int low, int high)
{
int pivot=a[high];
int i=(low-1);
for(int j-low;j<high; j++)
{
if(a[j]>=pivot){
i++;
swap(&a[i],&a[j]);
}
}
swap(&a[i+1],&a[high]);
return (i+1);
}
void quicksort(int a[], int low, int high)
{
if(low<high)
{
int pi-partition(a,low,high);
quicksort(a,low,pi-1);
quicksort (a,pi+1,high);
k++;
}
}
解决方案
推荐阅读
- angularjs - 选择选项没有随着 ng-model 的变化而更新
- regex - 在 CountVectorizer 上使用正则表达式删除数字和符号
- node.js - 从最近的 mongoose 查询传递到 pug 视图时,对象值对返回未定义,但 _id 除外
- php - 从 xamp 迁移到 raspberry pi apache 服务器
- hive - Hive Metastore 分区,它是如何工作的?
- ansible - Ansible - 剧本中的角色和任务执行处理
- vue.js - 使用 vee validate 为每个表单指定自定义消息
- java - Swagger UI - 请求的资源上不存在“Access-Control-Allow-Origin”标头
- javascript - vue js应用程序图像未从服务器加载
- c# - 在具有不同参数的接口中定义方法(C#)