码迷,mamicode.com
首页 > 编程语言 > 详细

程序员基础之——排序算法

时间:2018-03-12 13:41:07      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:参考   想法   --   amp   art   quic   logs   排序   UI   

快速排序

前言

快速排序是在面试中最常见的问题之一,如果有幸问到快排,面试官通常都要求应聘者在纸上手写出快排的代码。本人在最近的一次面试中就被要求手写快排,本来觉得快排的思想早已烂熟于心了,随便写一个出来没什么问题。但是当面前坐着一个面试官,并且要在15分钟内推导出一个无措的快排出来时,对我个人来说,但是还是非常紧张的,最终提交的答案还是存在瑕疵。
由此萌生了通过博客记录面试中基本问题的想法,一是给自己归纳总结,二是希望能够给阅读博客的童鞋也提供一些参考。
本文的目的是想要记录快速排序简洁、优雅的实现方式,并且探讨快速排序的一些问题。并且参考了各类书籍与博客,目前觉得最简洁、最好理解的方式如下:

‘‘‘
void quickSort(int arr[], int lo, int hi){
if(!arr || lo < 0 || lo >= hi) return;
int mid = partition(arr, lo, hi);
quickSort(arr, lo, mid - 1);
quickSort(arr, mid + 1, hi);
}

void partition(int arr[], int lo, int hi){
int start = lo;
int end = hi + 1;
int value = arr[lo];
while(true){
while(arr[++start] < value && start < hi);
while(arr[--end] > value);
if(start >= end) break;
swap(&arr[start], &arr[end]);
}
swap(&arr[lo], &arr[end]);
return end;
}
‘‘‘
主要参考链接https://algs4.cs.princeton.edu/home/

程序员基础之——排序算法

标签:参考   想法   --   amp   art   quic   logs   排序   UI   

原文地址:https://www.cnblogs.com/migoo/p/8548618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!