你是如何寫快排的?

時間 2021-05-31 00:01:33

1樓:問題背景調查員

// 快速排序。

void QuickSort(vector& nums, int left, int end)

if (nums[L] > nums[end])swap(nums[L], nums[end]);

QuickSort(nums, left, L );

QuickSort(nums, L + 1, end);

}//沒有精確劃分邊界,部分區間會有重複劃分。

2樓:

intpartition

(intA,

intp

,intr)

}swap(A

[r],A

[i+1

]);returni+

1;}int

quickSort

(intA,

intp

,intr)

return0;}

3樓:hardsing

qSrot::(

Orda

)=>[a

]->[a

]qSort

=qSort(x

:xs)=

qSrotl++

[x]++

qSort

rwhere(l

,r)=

partition

(

4樓:「已登出」

用的c++,參考資料結構與演算法分析c++描述可以跑的#include

#include

using namespace std;

ostream & operator <<(ostream & out,const vector &a)

; cout<

5樓:bitman

用Erlang實現尾遞迴的版本

sort(Ls

)->sort(Ls

,fun(X

)->Xend

).sort(,K

)->K();

sort([H

|T],K

)->sort([X

||X<-T,

X

fun(L)

->sort([X

||X<-T,

X>=H],

fun(R)

->K(

L++[H

|R])end

)end).

6樓:

function

quicksort

(arr

)const

pivot

=arr

.splice

(arr

.length

>>1,

1)[0]

letleft=

letright=

arr.

forEach(e

=>)return

[...

quickSort

(left

),pivot

,...

quickSort

(right)]}

補個 js 版本的

7樓:方正

function quickSort(a: number): any {

return a.length <= 1aquickSort(a.slice(1).

filter(item => item <= a[0])).concata[0quickSort(a.slice(1).

filter(item => item > a[0

其實這個是被prettier之後的

8樓:PegasusWang

python 也能一行流

9樓:2gua

List

quickSort

(List

lst)

varres

=quickSort

([35,-

1,8,

9,7,

0,10,

9,8,

23,65]);

print

(res

);//

Result:[-

1,0,

7,8,

8,9,

9,10,

23,35,65]

10樓:阿章

funqs

=|qs

(x::xs)=

case

List.

partition(fn

y=>y

xsof

(left

,right

)=>qsleft@[

x]@qs

right

11樓:開源醬

那什麼,J 語言了解一下?

quicksort

=:((

$:@(

<#[),

(=#[),

$:@(

>#[))(

{~?@#))^:(

1<#)

12樓:

挖個墳,演算法導論版本

public static void quickSort(int a, int start, int endif (start >= end) returnint t = a[endint i = start - 1for (int j = start; j <= end - 1; jif (a[j] < tiswap(a, i, jswap(a, i + 1, endquickSort(a, start, iquickSort(a, i+2, end);}

13樓:Cifer

題主要的是證明過程, 我倒是曾寫了一篇文章分析過這個問題, 下面貼出來的不是最優解, 感興趣的話可以戳這裡 對快速排序的理解與實現

void

swap

(int*a

,int*b

)int

median3

(int

*arr

,int

left

,int

right

)void

qsort

(int

*arr

,int

left

,int

right

)pivot

=median3

(arr

,left

,right);i

=left;j

=right;do

while(1

);/* i points to the position pivot should on */

swap(&

arr[i],

&arr

[right

]);qsort

(arr

,left,i

-1);qsort

(arr,i

+1,right);}

14樓:陳知許

#include

void

QuickSort

(int

arr,

intleft

,int

right

)while

(arr[j

]>mid)

//小於基準值移至左邊,大於基準值的移至右邊if(i<=j)

}if(j

>left)if

(i

#define LEN 10

//測試程式

intmain

(void);

printf

("Input %d integers:"

,LEN

);for

(inti=

0;i<

LEN;i++

)QuickSort

(arr,0

,LEN-1

);for

(inti=

0;i<

LEN;i++

)printf("

\n");return0;

}最近也也遇到這問題,看到乙個C語言的實現。

15樓:

看來看去都沒lisp版,我來補乙個7行的

#lang racket

(define (qsort num-list)(match num-list

16樓:

快忘了,趕緊補一下,邊界條件的問題可以看看《演算法》就一目了然。

int partition(int array, int start, in end)

i++;

swap(array[i],array[end]);

}int random_choose(int array,int start, int end)

void quicksort(int array,int start, int end)

}寫到這裡,一般面試官已經睡著了,你可以拍醒他,和他說:那我回去準備三方了。

17樓:

public static IEnumerable QuickSort(IEnumerable list) where T : IComparable

Source: 測試了一下LINQ寫的Quick Sort效能

18樓:Viko

template

T>void

quick_sort_recursive(Tarr,

intleft

,int

right

)swap

(arr

[right

],arr

[pivot

]);quick_sort_recursive(arr

,pivot

,right

);quick_sort_recursive(arr

,left

,end);}

template

T>void

quick_sort(T

arr,

intlen)

19樓:

@AlephAlpha

qsort

qsort := Join[qsort@Select[, # <= x &], , qsort@Select[, # > x &]]

20樓:

qsort() -> ;

qsort([H | T]) -> qsort([X || X <- T, X < H ]) ++ [H] ++ qsort([X || X <- T, X >= H]).

字寫的太醜,如何寫得又快又美觀?

汪財茂 你練毛筆字,肯定是下了一番功夫的,效果明顯。根據你的特殊要求,建議你做乙個嘗試 請你沉下心來,首先專練中鋒運筆 以中鋒畫線條,畫不同方向的中鋒線條,畫不同粗細的中鋒線條,行筆宛如遊龍,練到肌肉記憶。玩轉中鋒以後,再談其他。2019年7月27日手機碼字於湖北恩施花坪鎮 山中客 筆畫交代混亂,單...

你會如何寫情書?

王一般的藍銀 不只三行的情書 那個年頭 奮鬥 那段歲月 熱血 那時你看天看地看旁人看行人 卻未看我 這時我看你望你盼你念你 卻不敢見你 我們之間隔的不過是一句表白 當然還有兩個宇宙 峰迴路轉 又坐在了你的面前 可我又錯過了你 錯過了乙個總星系 此生只能無奈道一句 情不知所起 一往而深 我嘗試過離開你...

什麼是隱喻 ? 如何寫隱喻?

RogerTL 個人認為隱喻屬於暗喻,則是姜文電影裡那樣的,好的暗喻是啥也沒寫又好像啥都寫了,舉個不知道恰不恰當的例子吧 一人高的雜草在丘陵上被炮彈炸到連根不剩,志願軍戰士仍在此堅守,夜半人靜,周圍死氣沉沉,不時附近就冷槍一放,老連長又在夢中醒來,把手套摘掉,摸索著在濕漉的地上翻找到一塊木板,在這劃...