array sort - 2 : quick sort
递归实现:
#include <stdio.h>
int arr[10] = {3, 2, 4, 1, 9, 7, 5, 6, 0, 8};
void print_array()
{
int i = 0;
for (i = 0; i < 10; i++)
printf("arr[%d]:%d ", i, arr[i]);
printf("\n");
}
void swap(int *i, int *j)
{
int temp = *i;
*i = *j;
*j = temp;
}
void quick_sort(int left, int right)
{
if (left >= right)
return;
int i = left;
int j = right;
while (i < j) {
while (arr[j] >= arr[left] && j > i) {
j--;
}
while (arr[i] <= arr[left] && i < j) {
i++;
}
if (i != j) {
swap(&arr[i], &arr[j]);
print_array();
}
}
swap(&arr[left], &arr[i]);
print_array();
quick_sort(left, i-1);
quick_sort(i+1, right);
}
int main(int argc, char **argv)
{
int left = 0;
int right = 9;
print_array();
quick_sort(left, right);
print_array();
}
非递归实现:
转载于:https://www.cnblogs.com/roadmap99/p/6698807.html
array sort - 2 : quick sort相关推荐
- 快排Java代码实现(Quick Sort)
1. 快排算法思路 基本思想:通过一趟快速排序将待排数组分割成独立的两份部分; 其中一部分数组的值均比另一部分数组的值小,则可分别对着两部分数组继续进行排序,以达到整个序列有序. 快排的平均时间复杂 ...
- C++Quick sort快速排序的实现算法之二(附完整源码)
C++Quick sort快速排序的实现算法 C++Quick sort快速排序的实现算法完整源码(定义,实现,main函数测试) C++Quick sort快速排序的实现算法完整源码(定义,实现,m ...
- C语言快速排序 quick sort 算法(附完整源码)
快速排序 quick sort 算法 快速排序 quick sort 算法的完整源码(定义,实现,main函数测试) 快速排序 quick sort 算法的完整源码(定义,实现,main函数测试) # ...
- Lecture 4 Quick Sort and Randomized Quick Sort
Quick Sort --Divide and Conquer --Sorts "in place" --Very practical with tuning Divide and ...
- 图解快排——快速排序算法(quick sort)
快速排序 quick sort 算法思想 算法图解 算法实现(C语言) 性能分析 算法思想 快速排序算法是对冒泡排序算法的一种改进算法,在当前所有内部排序算法中,快速排序算法被认为是最好的排序算法之一 ...
- 快速排序 Quick Sort
快速排序 Quick Sort 我们已经知道,在决策树计算模型下,任何一个基于比较来确定两个元素相对位置的排序算法需要Ω(nlogn)计算时间.如果我们能设计一个需要O(n1ogn)时间的排序算法,则 ...
- 迭代的快速排序(Iterative Quick Sort)
原文地址:Iterative Quick Sort 译者注:教科书中一般介绍的是递归的快速排序,当年在百度校招面试的时候被问到这个问题,没写出来,真是遗憾-- 下面是一种典型的递归的实现,用最后一个元 ...
- DSA之十大排序算法第六种:Quick Sort
快速排序 2019年8月23日17:45:21 之前我们已经分析过 冒泡排序,我建议:当你在看这篇博客的时候,请先回顾 冒泡排序:详见DSA之十大排序算法第一种:Bubble sort 文章目录 一次 ...
- 排序——快速排序(Quick sort)
概况 快速排序(Quick sort)是对冒泡排序的一种改进.快速排序由C. A. R. Hoare在1960年提出. 算法思路 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比 ...
最新文章
- qtdesigner怎么实现菜单栏跳转_3种公众号菜单栏设置类型,手把手教你做,不会的话那就再看一遍...
- 就算是戴上口罩,AI也知道你在说什么丨EMNLP 2020最佳论文
- session may be lost when use window.open to open a new window
- 3、Power View—数据透视表般华丽
- Kotlin替换Dagger2/Hilt的依赖注入框架--Koin。
- node.js项目中常量的配置 - 个人文章 - SegmentFault 思否
- sql初学者指南_使用tSQLt框架SQL单元测试面向初学者
- [实战]MVC5+EF6+MySql企业网盘实战(24)——视频列表
- LeetCode简单题目(#160 #167 #168 #169 #171)-5道(序列、数字)
- ctfshow 做题 MISC入门 模块 21~30
- 夯实Java基础系列10:深入理解Java中的异常体系
- Java将英文句子分解为单词
- 首位文博虚拟宣推官“文夭夭”上岗
- 记录下:订单模块初步完成
- 计算机硬件专业叫什么作用,计算机硬件的五大功能是什么呢
- 一个屌丝程序员的青春(一九一)
- Spring、SpringMVC、SpringBoot及其插件学习笔记集合(持续更新中....)
- linux 限速命令,Linux路由器限速设置详细教程
- 不同路径中的文件如何批量改名的实用技巧
- js 不得不知道的秘密
热门文章
- php中的getdate+函数,PHP中的getdate()函数
- android 嵌套分组拖动_GitHub - Mosect/DragLayout: Android拖拽控件,支持上下左右滑动、折叠或者嵌套ListView、RecyclerView等...
- python怎么清空屏幕_python如何清屏
- linux usb xhci ehci,ehci和xhci有什么区别
- python 打开targz文件_Python下使用pandas打开excel文件并进行处理
- Python+Opencv实现模板匹配
- Linux16.04配置OpenCV3.2
- Centos7装NVIDIA显卡驱动(GPU)
- Leetcode刷题 34.在排序数组中查找元素的第一个和最后一个位置
- NLog日志写文件的一个性能问题