快排基本思想:
在待排序的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個數不到,常規方法肯定是不行的 我們你可以利用 伴隨陣列 那種思想利用記...