//此函式用來尋找從右往左第1位~第k位數字中最大的數
//因為陣列長度較小,採用遞迴排序的非鍊錶方法
#include
#include
#include
#define div 10
#define n 10
typedef int cat;
cat digit(cat n, cat k); //拆分函式
void quick_sort(cat a, cat low, cat high);
cat split(cat a, cat low, cat high);
cat main(void)
else
return 0;cat digit(cat n, cat k) //定義兩個形式引數n,k
quick_sort(arr, 0, k);//第三個引數的長度為變數k可以減少排序位數
num = arr[k]; //注意這裡不用-1
return num;
}else//使用快速排序返回最大值
void quick_sort(cat a, cat low, cat high)
elsecat split(cat a, cat low, cat high)
a[low++] = a[high];
//low++;
while (low < high && value >= a[low])
low++;
if (low >= high) break;
a[high--] = a[low];
//high--;
}a[low] = value;
return low;/* 此為原快速排序**main函式體
cat main(void)
quick_sort(a, 0, n - 1);
printf("in sorted order: ");
for(i = 0; i < n; i++)
return 0;
C語言 用C語言實現快速排序
快速排序時間複雜度為o nlogn 是陣列相關的題目當中經常會用到的演算法。在c語言中,陣列作為引數傳遞時會轉換為指向陣列起始位址的指標,非陣列形式的資料實參均以傳值形式呼叫。下列兩種形式的傳參時等價的,他們均指向陣列a的初始位址。void test int a void test int a 因此...
用陣列實現快速排序(C )
快速排序是分而治之法的一種排序方法,快速排序將n個元素分為三段。left段,right段和middle段,中間僅有乙個元素。我叫做關鍵值。左邊的元素都不大於中間段,右邊的元素都不小於中間段。因此可以對left與right段進行單獨的排序。完整 實現如下 include using namespace...
用C語言實現氣泡排序,插入排序,快速排序
本篇文章分別介紹三種排序方法,氣泡排序,插入排序,快速排序。為了便於提高效率與閱讀,借助rand 函式隨機分配整數初始化與賦值給陣列。具體實現原理與過程請看 帶有詳細的注釋,謝謝。include include 公共函式 void printarray int parray void createu...