快速排序演算法 資料結構

2021-08-20 04:24:40 字數 1178 閱讀 5106

快排基本思想:

在待排序的n個元素中任取乙個元素(通常取第乙個元素)作為基準,把該元素放入最終的位置上 (即歸位乙個元素),資料序列被此元素劃分成倆部分:所有關鍵子比該元素關鍵字小的元素放置在前一部分,所有比它大的元素放置在後一部分,這個過程稱作一趟排序。以後對所有的倆部分分別重複上述過程,直至每部分內只有乙個元素或空為止。簡而言之,每趟使表的第乙個元素放入適當位置,將表一分為二,對子表按遞迴方式繼續這種劃分,直至劃分的子表的長度為1或0。

測試用例:

1.排好序的陣列;

2.隨機數組。

程式**:

quicksort.h:

#pragma once

#includetypedef int rectype;

void quicksort(rectype arr,int start,int tail);

quicksort.c:

#include "quicksort.h"

//quicksort函式

void quicksort(rectype arr,int start,int tail)

arr[i] = arr[j];

while(i測試用例**:

//主函式

int main();

quicksort(arr,0,5);

int i = 0;

printf("排序前:");

for(;i<6;++i)

printf("\n");

printf("排序後:");

i = 0;

for(;i<6;++i)

printf("\n");

rectype arr1 = ;

quicksort(arr1,0,5);

i = 0;

printf("排序前:");

for(;i<6;++i)

printf("\n");

printf("排序後:");

i = 0;

for(;i<6;++i)

printf("\n");

return 0;

}

結果顯示:

演算法資料結構筆記 快速排序

快速排序通過左右兩邊各指定乙個指標,不斷向中間靠攏,如果左邊的指標找到比基準點大的,或者右邊的指標找到比基準點小的,就把他們交換,基準點一般是陣列的第乙個的值。左右指標指向同乙個值,就把這個值和基準點交換。我們就找到了基準點本來的的位置 很顯然 雖然順序不對,但他的左邊都是比他小的,右邊都是比他大的...

排序演算法 資料結構

把插入排序的1變成dk 和圖示不一樣,是冒泡最小 只用於正數 1 public int sortarray int nums 8int bit 0 9while max math.pow 10,bit 12for int i 0 i bit i 17for integer n nums 22int ...

演算法(資料結構)

空間不夠儲存 給40億個不重複的unsigned int的整數,沒排過序的,然後再給乙個數,如何快速判斷這個數是否在那40億個數當中 40億個數空間儲存的問題 利用對映 分析 unsigned 範圍是2 32 40億大約大約4g個數不到,常規方法肯定是不行的 我們你可以利用 伴隨陣列 那種思想利用記...