二分法快速排序

2021-10-02 02:00:27 字數 1184 閱讀 4491

我在實現二分法快速排序的時候,最初的程式是這樣的。

#include

using

namespace std;

void

qsort

(int arr,

int left,

int right)

while

(l < r && arr[l]

<= value)l++;if

(arr[l]

> value)

}while

(l != r)

; arr[l]

= value;

qsort

(arr,left,r--);

qsort

(arr,l++

,right);}

int a[

100]

;int

main()

這時的報錯有/bin/sh: line 1: 12518 segmentation fault: 11

據說是因為記憶體越界?

檢查發現,我把邊界點寫錯了qsort(arr,left,r--); qsort(arr,l++,right);大錯特錯,還忘了寫遞迴邊界

修改後

#include

using

namespace std;

void

qsort

(int arr,

int left,

int right)

while

(l < r && arr[l]

<= value)l++;if

(arr[l]

> value)

}while

(l != r)

; arr[l]

= value;

qsort

(arr,left,l-1)

;qsort

(arr,r+

1,right);}

int a[

100]

;int

main()

就ac了

好喜歡這一句話

C 快速(二分法)排序

快速 二分法 排序的思想是將陣列劃分為兩邊,以某個節點v為界 設這個節點的值為 v 在節點v左邊的所有元素都小於 v,在節點v右邊的所有元素都大於v.這樣不停地劃分,到最後整個陣列就是有序的了。具體分成兩邊的思路為 起始下標為start,結束下標為 end 選擇v a end 作為中介點 先從sta...

二分法 選擇排序 快速排序

最近看了 演算法 覺得很棒,做一些總結記錄。coding utf 8 import random author chenk class algorithme def init self self.low 0 self.high 10000 def get random num self return...

二分法排序C

首先說一下二分法排序的原理,演算法思想簡單描述 在插入第i個元素時,對前面的0 i 1元素進行折半,先跟他們 中間的那個元素比,如果小,則對前半再進行折半,否則對後半 進行折半,直到left right,然後再把第i個元素前1位與目標位置之間 的所有元素後移,再把第i個元素放在目標位置上。二分法排序...