這個**是我自己靠思路寫的,問題不斷,請各位大佬,指定下,哪些地方問題很大,哪些地方可以提公升提公升
#include
#include
intfuncation
(int
*a,int p,
int q,
int k)
;int
sort
(int
* aa,
int left,
int right)
;int
* arr=
(int*)
malloc(20
*sizeof
(int))
;int
* mid=
(int*)
malloc(20
*sizeof
(int))
;int
* l=
(int*)
malloc(20
*sizeof
(int))
;int
* r=
(int*)
malloc(20
*sizeof
(int))
;void
main()
printf
("您想查第幾小的數字?");
scanf
("%d"
,&k)
;int result=
funcation
(arr,
0,len-
1,k)
;//接入自定義函式,需要陣列arr,0,len-1,k
printf
("您查詢的數為%d"
,result)
;system
("pause");
}int
funcation
(int
*a,int p,
int q,
int k)if(
(q+1)%
5!=0)
//如果模5有餘數,把最後乙個的中位數新增到中位數陣列裡最後乙個
int mm=
sort
(mid,0,
(q+1)/
5-1)
;//中位數陣列的中位數
int j=
0,n=
0,m=0;
for(
;j1;j++)if
(a[j]
>mm)}if
(k<=n)
if(k>n+1)
else
}int
sort
(int
* aa,
int left,
int right)
//快速排序部分,把中位數取出來
i= left;
j= right;
temp = aa[i]
;while
(i != j)
while
(aa[i]
<=temp && i
if(i
} aa[left]
= aa[i]
; aa[i]
= temp;
sort
(aa,left, i-1)
;sort
(aa,i+
1, right)
;}
#include
#include
int* arr=
(int*)
malloc(10
*sizeof
(int))
;int
* l=
(int*)
malloc(10
*sizeof
(int))
;int
* r=
(int*)
malloc(10
*sizeof
(int))
;int
bubble
(int
*a,int left,
int right)
;int
function
(int
* a,
int p,
int q,
int k)
;void
main()
printf
("您想查第幾小的數字?");
scanf
("%d"
,&k)
;int result=
function
(arr,
0,len-
1,k)
;//接入自定義函式,需要陣列arr,0,len-1,k
printf
("您查詢的數為%d"
,result)
;system
("pause");
}int
function
(int
* a,
int p,
int q,
int k)
//q-p+1是陣列的長度len
線性時間排序 三 C語言
給定若干字串,也就是二維陣列,字串指標之類的.如 ab,a,b.要求排序後為 a,ab,b.字母數為 n 在 o n 時間完成.這個問題,是昨天那個問題的下乙個問題.我起初的方向是錯的.後來,採用了分治的方法給予實現.關於時間的分析,每次都只對當前位置不為 nul 的字元進行排序.所以,當然就是 o...
線性期望時間選擇問題C語言
直接上 include define size 20 int main void int select int const array,const int left,const int right,const int ith int partition int const array,const i...
線性時間選擇
今天學習了線性時間選擇,主要是通過快排的方法,在乙個平均時間線性的情況下進行第k小元素的選擇,結合一道題目進行描述 題目來自演算法設計與分析就是王曉東的那本 output.txt 這題目分析一下可以得出就是尋找中位數 為什麼呢?將這些數字排列在數軸上尋找乙個到各個點距離最小的那個點,可以得知最中間的...