博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快排算法
阅读量:6843 次
发布时间:2019-06-26

本文共 2048 字,大约阅读时间需要 6 分钟。

  hot3.png

快排C++版

#include
using namespace std;// arr 是一个二维数组// arr 需要排序arr的开始位// arr 需要排序arr的结束位// x 表示要比较的二维数组的维void qsort(int arr[][2], int start, int end, int x){ int i = start; // 用i, j相当于保留原始的start,end,下面会用到边界 int j = end; int key = arr[i][x]; int t0, t1; while (i < j) { // 向左移动直到位置j的值小于key while ((key <= arr[j][x]) && (i < j)) { j -= 1; } // 出现小于key的j时,交换arr[i] 和arr[j] 的值 t0 = arr[i][0]; t1 = arr[i][1]; arr[i][0] = arr[j][0]; arr[i][1] = arr[j][1]; arr[j][0] = t0; arr[j][1] = t1; // 向右移动直到位置i的值大于key while ((key >= arr[i][x]) && (i < j)) { i += 1; } // 出现大于key的i时,交换arr[i] 和arr[j] 的值 t0 = arr[i][0]; t1 = arr[i][1]; arr[i][0] = arr[j][0]; arr[i][1] = arr[j][1]; arr[j][0] = t0; arr[j][1] = t1; } // 以上代码到这儿,位置i == j的那个值就永远固定了,他左侧的数都比他小,右侧的数都比他大 if (i > start) { // 递归对左侧数据排序 qsort(arr, start, i - 1, x); } if (j < end) { // 递归对右侧数据排序 qsort(arr, j + 1, end, x); }}int main(){ int arr[12][2] = {
{1,3}, {2,5}, {3, 1}, {4,3}, {5,14}, {6, 1}, {7,3}, {8,4}, {9, 1}, {10,11}, {11,4}, {12, 1}}; int len = 12; // 排序前输出 for(int i = 0; i < len; i++) { cout<
<<" "<
<
快排Python版

'''Created on 2013-9-3@author: gudh'''def qsort(arr, start, end, x):    i = start    j = end    key = arr[i][x]    while i < j:        while key <= arr[j][x] and i < j:            j -= 1        t = arr[i]        arr[i] = arr[j]        arr[j] = t        while key >= arr[i][x] and i < j:            i += 1        t = arr[i]        arr[i] = arr[j]        arr[j] = t    if i > start:        qsort(arr, start, i - 1, x)    if j < end:        qsort(arr, j + 1, end, x)if __name__ == '__main__':    arr = []    import random    for i in range(1000):        arr.append((i, random.random()))    print arr    qsort(arr, 0, len(arr) - 1, 1)    print arr        for i in range(99):        if arr[i][1] > arr[i+1][1]:            print i,arr[i], arr[i+1], False

转载于:https://my.oschina.net/yhzh/blog/158850

你可能感兴趣的文章
NoSql redis windows下的环境搭建
查看>>
PHP利用mongodb存取文件
查看>>
Zabbix Documentation 3.0
查看>>
udp组播
查看>>
yum方式远程安装gnome
查看>>
如何学好C语言
查看>>
Linux学习之CentOS(十)--虚拟机下的CentOS如何上网
查看>>
html5的postmessage实现js前端跨域访问及调用解决方案
查看>>
vscode的 ESLINT 检查vue,js文件配置说明
查看>>
实现Div层里的文字垂直居中的方法
查看>>
我的友情链接
查看>>
谁说使用Python你就写不出混乱的代码?
查看>>
网桥和交换机的区别
查看>>
使用Raspcontrol在线查看树莓派各项情况
查看>>
超强JIRA流程图
查看>>
java 导出excel表格
查看>>
android好帖子
查看>>
使用EqualsBuilder和HashCodeBuilder重写equals、hashCode方法
查看>>
合理信息安全设备的选择 选型依据分析
查看>>
操作Visual Studio 2010中的SQL Server数据库比较工具
查看>>