C語言基礎 用快速排序實現輸出最大數

2021-08-10 22:56:13 字數 1028 閱讀 8507

//此函式用來尋找從右往左第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...