1. 程式人生 > >6-11 求自定型別元素序列的中位數(25 分)

6-11 求自定型別元素序列的中位數(25 分)

/*冒泡超時,採用了堆排序*/

ElementType Median( ElementType A[], int N )
{
  int i,j;
  float k;
  
  int p,c;
  for(i=(N-1)/2;i>=0;i--)
  for(p=i,c=2*p+1;c<=N-1;)
  {
      if((A[c+1])&&(A[c+1]<A[c]))
         c=c+1;
      if(A[c]<A[p])
      {
         k=A[c];
         A[c]=A[p];
         A[p]=k;
      }
      p=c;
      c=2*p+1;
  }                              //最小堆

  for(i=N-1;i>0;i--)
  {
    k=A[0];
    A[0]=A[i];
    A[i]=k;                     //調序
    for(j=0;j*2+1<i;)
    {
      if(j*2+2<i)
      {
        if(A[j*2+1]>A[j*2+2]) 
            j=j*2+2;
        else 
            j=j*2+1;
      }
      else 
          j=j*2+1;            //找到較小的孩子
      
      if(A[j]<A[(j-1)/2])
      {
        k=A[j];
        A[j]=A[(j-1)/2];
        A[(j-1)/2]=k;                  
      }
      else break;
    }                           //下滲
  }
  return A[(N-1)/2];                    //要認真分析下標
}

相關推薦

6-11 型別元素序列位數25

/*冒泡超時,採用了堆排序*/ ElementType Median( ElementType A[], int N ) {   int i,j;   float k;      int p,c;   for(i=(N-1)/2;i>=0;i--)   for(p=i

pat6-11型別元素序列位數

6-11 求自定型別元素序列的中位數(25 分) 本題要求實現一個函式,求N個集合元素A[]的中位數,即序列中第?N/2+1?大的元素。其中集合元素的型別為自定義的ElementType。 函式介面定義:ElementType Median( ElementType A[],

6-11 類型元素序列位數25

\n 相關 n) 以及 std turn clu i++ 測試 6-11 6-11 求自定類型元素序列的中位數(25 分) 本題要求實現一個函數,求N個集合元素A[]的中位數,即序列中第?N/2+1?大的元素。其中集合元素的類型為自定義的ElementType。 函數接口定

6-5 型別元素的最大值

本題要求實現一個函式,求N個集合元素S[]中的最大值,其中集合元素的型別為自定義的ElementType。 原題地址 ElementType Max( ElementType S[], int N ) { int i; ElementType a=S[0];

6-4 型別元素的平均 10

[本題要求實現一個函式,求N個集合元素S[]的平均值,其中集合元素的型別為自定義的ElementType。 題目原址 ElementType Average( ElementType S[], int N ) { double sum=0; double averag

PAT基礎程式設計題目集——6-5 型別元素的最大值

原題目: 本題要求實現一個函式,求N個集合元素S[]中的最大值,其中集合元素的型別為自定義的ElementType。 函式介面定義: ElementType Max( ElementType S[], int N ); 其中給定集合元素存放在陣列S[]中,正整數N是陣列元素個數

PAT基礎程式設計題目集——6-4 型別元素的平均

原題目: 本題要求實現一個函式,求N個集合元素S[]的平均值,其中集合元素的型別為自定義的ElementType。 函式介面定義: ElementType Average( ElementType S[], int N ); 其中給定集合元素存放在陣列S[]中,正整數N是陣列元

6-5 型別元素的最大值10

6-5 求自定型別元素的最大值(10 分)本題要求實現一個函式,求N個集合元素S[]中的最大值,其中集合元素的型別為自定義的ElementType。函式介面定義:ElementType Max( ElementType S[], int N ); 其中給定集合元素存放在陣列S

6-4 型別元素的平均10 本題要求實現一個函式,N個集合元素S[]的平均值,其中集合元素型別定義的ElementType。

ElementType Average( ElementType S[], int N ){  ElementType ave,sum=0.0;  for(int i=0;i<N;i++)    sum+=S[i];  ave=sum/N;  return ave;}把

7-1 兩個有序序列位數 25

已知有兩個等長的非降序序列S1, S2, 設計函式求S1與S2並集的中位數。有序序列A​0​​,A​1​​,⋯,A​N−1​​的中位數指A​(N−1)/2​​的值,即第⌊(N+1)/2⌋個數(A​0​​為第1個數)。 輸入格式: 輸入分三行。第一行給出序列的公共長度N(0<N≤10

7-1 兩個有序序列位數25

已知有兩個等長的非降序序列S1, S2, 設計函式求S1與S2並集的中位數。有序序列A​0​​ ,A1,⋯,A​N−1的中位數指A​(N−1)/2的值,即第⌊(N+1)/2⌋個數(A​0為第1個數)。 輸入格式: 輸入分三行。第一行給出序列的公共長度N(0

6-1 兩個有序連結串列序列的合併 15

本題要求實現一個函式,將兩個連結串列表示的遞增整數序列合併為一個非遞減的整數序列。 函式介面定義: List Merge( List L1, List L2 ); 其中List結構定義如下: typedef struct Node PtrToNode; struct Node

6-2 兩個有序連結串列序列的合併 14

本題要求實現一個函式,將兩個連結串列表示的遞增整數序列合併為一個非遞減的整數序列。 函式介面定義: List Merge( List L1, List L2 ); 其中List結構定義如下: typedef struct Node PtrToNode; struct Node { E

兩個有序序列位數30

已知有兩個等長的非降序序列S1, S2, 設計函式求S1與S2並集的中位數。有序序列A​0​​,A​1​​,⋯,A​N−1​​的中位數指A​(N−1)/2​​的值,即第⌊(N+1)/2⌋個數(A​0​​為第1個數)。輸入格式:輸入分三行。第一行給出序列的公共長度N(0<

6-1 線性表元素的區間刪除 20

給定一個順序儲存的線性表,請設計一個函式刪除所有值大於min而且小於max的元素。刪除後表中剩餘元素保持順序儲存,並且相對位置不能改變。 函式介面定義: List Delete( List L, ElementType minD, Elemen

6-1 陣列元素的區間刪除 18

給定一個順序儲存的線性表,請設計一個函式刪除所有值大於min而且小於max的元素。刪除後表中剩餘元素保持順序儲存,並且相對位置不能改變。 函式介面定義: int Delete( int A[], int L, int minA, int maxA ); 其中A是整型陣列,儲存原始線性表的

6-2 jmu-Java-05集合-List指定元素的刪除 25

6-2 jmu-Java-05集合-List中指定元素的刪除 (25 分) 編寫以下兩個函式 /*以空格(單個或多個)為分隔符,將line中的元素抽取出來,放入一個List*/ public static List<String> convertStrin

6-6 單鏈表結點的階乘和15 本題要求實現一個函式,單鏈表L結點的階乘和。這裡預設所有結點的值非負,且題目保證結果在int範圍內。

int FactorialSum( List L ){  int max=0,sum=0;  List p,head;  head=L;  p=head;  while(p!=NULL)  {    if(max<p->Data)    max=p->Dat

習題3.11 表達式轉換25 浙大版《數據結構第2版》題目集

lang == lan 包括 設計程序 不用 運算 出現 加減 算術表達式有前綴表示法、中綴表示法和後綴表示法等形式。日常使用的算術表達式是采用中綴表示法,即二元運算符位於兩個運算數中間。請設計程序將中綴表達式轉換為後綴表達式。 輸入格式: 輸入在一行中給出不含

6-16 Topological Sort25

tin amp logs from print %d turn com pro Write a program to find the topological order in a digraph. Format of functions: bool Top