多種排序組合

2021-08-08 04:49:31 字數 1705 閱讀 8463

#include void bubble(int *a,int n);       // 氣泡排序

void choise(int *a,int n); // 選擇排序

void quick(int *a,int i,int j); // 快速排序

void insert(int *a,int n); // 插入法

void shell(int *a,int n); // shell

void print(int *a,int n); // 列印陣列

int main(void)

; int a2=;

int a3=;

int a4=;

int a5=;

printf("the original list :");

print(a1,10);

printf("according to bubble:");

bubble(a1,10);

print(a1,10);

printf("according to choise:");

choise(a2,10);

print(a2,10);

printf("according to quick :");

quick(a3,0,9);

print(a3,10);

printf("according to insert:");

insert(a4,10);

print(a4,10);

printf("according to shell :");

shell(a5,10);

print(a5,10);

}// 氣泡排序 }

/* 選擇排序

選擇法迴圈過程與冒泡法一致,

它還定義了記號k=i,然後依次把a[k]同後面元素比較,

若a[k]>a[j],則使k=j.最後看看k=i是否還成立,

不成立則交換a[k],a[i],這樣就比冒泡法省下許多無用的交換,提高了效率。

*/void choise(int *a,int n)

} } /* 快速排序

快速法定義了三個引數,

(陣列首位址*a,要排序陣列起始元素下標i,要排序陣列結束元素下標j)

它首先選乙個陣列元素(一般為a[(i+j)/2],即中間元素)作為參照,

把比它小的元素放到它的左邊,比它大的放在右邊。

然後運用遞迴,在將它左,右兩個子陣列排序,

最後完成整個陣列的排序。*/

void quick(int *a,int i,int j)

}while(m<=n);

if(mi) quick(a,i,n);

} /* 插入法

插 入法是一種比較直觀的排序方法。

它首先把陣列頭兩個元素排好序,

再依次把後面的元素插入適當的位置。

把陣列元素插完也就完成了排序。*/

void insert(int *a,int n)

a[j+k]=x;

} k/=2; /*縮小間距值*/

} }

//列印陣列

void print(int *a,int n)

HeadFirst 多種模式組合使用

我們要通過乙個例子把前邊學習過的設計模式串一遍,以一種需求不斷疊加的實際工作場景為背景。首先我們還是把我們第乙個模式所舉的鴨子的例子搬出來,我們要建立乙個模擬器對這些鴨子的叫聲進行模擬 首先我們設計乙個呱呱叫的介面 public inte ce quackable 接著我們讓一些類實現這個介面 一些...

多種引數排序說明

多種引數排序說明 定義乙個類 public class clssort implements icomparable 必須要是繼續的 private mvarid as integer public property id as integer getreturn mvarid end get se...

java 多種排序演算法

1 時間頻度 乙個演算法中的語句執行次數叫做語句頻度或時間頻度,用t n 表示。理論上無法計算乙個演算法執行所需的時間,必須上機測試才能知道,但是我們不可能也沒必要對每個演算法都進行上機測試,我們只需要知道哪個演算法執行時間長,哪個演算法執行時間短即可。演算法花費的時間和演算法中語句執行次數成正比,...