6-11 求自定型別元素序列的中位數 (25分)希爾排序……
本題要求實現一個函式,求N個集合元素A[]的中位數,即序列中第⌊(N+1)/2⌋大的元素。其中集合元素的型別為自定義的ElementType。
函式介面定義:
ElementType Median( ElementType A[], int N );
其中給定集合元素存放在陣列A[]中,正整數N是陣列元素個數。該函式須返回N個A[]元素的中位數,其值也必須是ElementType型別。
裁判測試程式樣例:
#include <stdio.h>
#define MAXN 10
typedef float ElementType;
ElementType Median( ElementType A[], int N );
int main ()
{
ElementType A[MAXN];
int N, i;
scanf("%d", &N);
for ( i=0; i<N; i++ )
scanf("%f", &A[i]);
printf("%.2f\n", Median(A, N));
return 0;
}
/* 你的程式碼將被嵌在這裡 */
輸入樣例:
3
12.3 34 -5
輸出樣例:
12.30
這道題,出得一點也不講師德,來,騙,來,搞我心態,我一個19歲的老同志,這好嗎,這不好!我就想劃下水,做下簡單的程式設計題,欺騙自己在努力學習,於是看到了序列中位數,我說這道題不就是排序然後給出指定的位置嗎,為了給自己加大難度,我上來就是一個快速排序,一個計算輸出下標,我全部想到了啊,按照傳統,解題點到為止,於是我點了提交,結果顯示最大N,超時,大意了啊,沒想到這題暗藏玄機,看來是有備而來,我說,你這道題沒水準標題騙淫,她說,她是亂出的,這題可不是亂出的啊,暗藏希爾排序,而希爾排序裡又有直接插入排序,後來她說她在浙大教書,出過幾本書,好傢伙,看來是有備而來!
我勸,這位出題人,耗子尾汁,好好反思。以後不要再犯這樣的詭計,小詭計啊。
pta要以和為貴,要將師德,不要搞窩裡鬥。謝謝朋友們。
ElementType Median( ElementType A[], int N )
{
int i,j,gap;
//利用希爾排序排序好陣列,最深層迴圈為希爾排序裡的直接插入排序法、
for(gap=N/2;gap>0;gap/=2)//步長
for(i=0;i<gap;i++)
{
for(j=i+gap;j<N;j+=gap)
if(A[j]<A[j-gap]){
float temp=A[j];
int k=j-gap;
while(k>=0&&A[k]>temp)
{
A[k+gap]=A[k];
k-=gap;
}
A[k+gap]=temp;
}
}
return A[N/2];
}
文末附上開始寫的垃圾程式碼
int kuaipai(ElementType A[],int i,int N)
{
int j=i,k=N;
float box=A[i];
while(j<k)
{
while(j<k&&A[k]>=box) k--;
if(k>j) {
A[j]=A[k];
j++;
}
while(j<k&&A[j]<box) j++;
if(j<k) {
A[k]=A[j];
k--;
}
}
A[j]=box;
return j;
}
void part2(ElementType A[],int i,int N)
{
if(i<N){
int r=kuaipai(A,i,N);
part2(A,r+1,N);
part2(A,i,r-1);
}
}
ElementType Median( ElementType A[], int N )
{
part2(A,0,N-1);
if(N%2==0)
return (A[N/2]+A[N/2-1])/2.0;
else return A[N/2];
}
相關文章
- PTA基礎程式設計題目集 6-11 求自定型別元素序列的中位數 (25分)程式設計型別
- 泛型中的自限定型別泛型型別
- jquery實現的獲取指定元素指定型別元素數目jQuery型別
- JavaScript獲取元素下指定型別的一級子元素JavaScript型別
- 希爾排序排序
- 希爾排序(一)排序
- 希爾排序(二)排序
- Java希爾排序Java排序
- 理解希爾排序排序
- java 希爾排序Java排序
- 一組關鍵字序列,分別給出用希爾排序、直接選擇排序演算法從小到大排序結果排序演算法
- 排序演算法__希爾排序排序演算法
- 【排序演算法】- 希爾排序排序演算法
- 希爾排序——重溫排序(二)排序
- C++希爾排序C++排序
- 希爾排序(C++)排序C++
- 【筆記】希爾排序筆記排序
- 希爾排序(Shell Sort)排序
- 求資料流中的中位數問題
- mysql 求分組中位數、環比、同比、中位數的環比、同比MySql
- jquery獲取指定型別子元素程式碼例項jQuery型別
- jQuery查詢指定型別的父級元素程式碼例項jQuery型別
- jQuery如何實現獲取父元素下指定型別標籤的子元素集合jQuery型別
- 排序演算法之希爾排序排序演算法
- 【排序】插入類排序—(折半)插入排序、希爾排序排序
- 每天一道演算法題:求兩個排序陣列的中位數演算法排序陣列
- 希爾排序java實現排序Java
- 位運算--求一個 數二進位制中1的個數
- jQuery獲取指定型別最近的父輩元素程式碼例項jQuery型別
- javascript如何判斷指定型別元素是否具有指定屬性JavaScript型別
- PHP 排序演算法之希爾排序PHP排序演算法
- varchar型別的欄位儲存純數字的排序型別排序
- 4. 兩個排序陣列的中位數排序陣列
- 【c語言】求兩個數中不同的位的個數C語言
- 獲取第一級指定型別子元素程式碼例項型別
- 【演算法】希爾排序的實現演算法排序
- 【資料結構】希爾排序!!!資料結構排序
- 【資料結構】希爾排序資料結構排序