編寫乙個排序程式,如何寫出乙個較好的快速排序程式

時間 2025-04-17 07:25:20

1樓:司涵桃

;using ;

class program

static void main(string args)

sortednumbers();

該方法獲得需要排序的陣列,表呼叫排序方法進行排序。

public static void sortednumbers()

int numbercount;

int numbers;

請問您要對多少個數字進行排序?")

numbercount =

numbers = new int[numbercount];

請輸入您要進行排序的這個數字:",numbercount);

for (int i = 0; i < numbercount; i++)

numbers[i] =

您要進行排序的個數字分別為:",numbercount);

for (int i = 0; i < numbercount; i++)

t");您要對這個數字進行什麼排序?(1表示氣泡排序,2表示選擇排序)",numbercount);

int method =

只能輸入1或者2,請您重新輸入!")

method =

呼叫排序方法。

executesortedmethod(numbers, method);

排序後的結果為:")

for (int i = 0; i < numbercount; i++)

t");// 接受數字引數和排序方法引數,進行排序。

要進行排序的整數陣列。

排序方法標識:1為冒泡,2為選擇。

public static void executesortedmethod(int num, int sortedmethod)

if (sortedmethod ==1) /冒泡排列。

for (int i = 0; i < 1; i++)

for (int j = 0; j < 1 - i; j++)

if (num[j] >num[j + 1])

int temp = num[j];

num[j] =num[j + 1];

num[j + 1] =temp;

if (sortedmethod ==2) /選擇排列。

int min;

for(int i=0;i<;i++)

min=i;

for(int j=i+1;j<;j++)

if(num[j]min=j;

int t=num[min];

num[min]=num[i];

num[i]=t;

2樓:網友

#include

main(){

int i,j,temp,num,a[11];

printf("請輸入10個整數:");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

從小到大排序。

for(i=0;i<9;i++)

for(j=i+1;j<10;j++)

if(a[i]>a[j])

temp = a[i];

a[i] =a[j];

a[j] =temp;

printf("%4d",a[i]);

printf("%4d",a[i]);

插入值。printf("請輸入要插入的值:")scanf("%d",&num);

for(i=0;i<10;i++)

if(num<=a[i])

for(j=9;j>=i;j--)

a[j+1] =a[j];

break;

a[i] =num;

for(i=0;i<11;i++)

printf("%4d",a[i]);

printf("");

如何寫出乙個較好的快速排序程式

3樓:無時無刻的相戀

首先要寫正確。通常使用遞迴實現。其遞迴相當於二叉樹,因此如果要用迭代實現的話需要使用乙個佇列來儲存後續遍歷資訊。

快速排序需要找到乙個pivot值,如果順序選擇pivot則易造成n^2的複雜度,如果使用隨機數則效果最好,但開銷又太大,採取三數中值法比較合適。三數中值法指的是選取第乙個值,最後乙個值,陣列中間的值的中值。有文獻表明可以提公升5%的執行時間。

當陣列長度較小時,如10個元素以下,最好使用插入排序或者選擇排序完成,以防止複雜度常數因子過大或多次函式呼叫帶來的開銷。而遞迴到底層陣列長度總是會變小的,因此這麼做非常有必要。

在合併前後兩部分陣列時,採用兩邊夾方法,在前後兩部分各找到乙個大於和小於的值再交換。相比通常情況下找到比pivot小的值就進行交換,能提高執行效率。

C 編寫小程式(思路即可),C 編寫一個小程式(思路即可)

求出該整數的各個位 比如 125,百位為1,十位為2,個位為5 依次放入int型陣列,x 另外定義一個9個大小的int陣列a,初始化為0然後迴圈,每個迴圈裡switch x i case 1 a 0 省略 第一步 先判斷輸入的整數是多少位的,比如輸入的是 123 就是三位的 第二步 將這個數除以10...

用C語言編寫程式,用C語言編寫一個程式

樓上沒有找出相差最小的數而是找出的和平均數比較結果中最小的數 include include void main int v,b 10 int i v a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 10 for i 0 i 10 i for i 0 i 9 i if...

編寫一個C 程式,要能編譯無誤的!

過載double 不會。關鍵字是能過載的嗎?求教。用c語言語句編寫的程式被稱為c語言的 用c語言語句編寫的程式被稱為c語言的 用 c 語言編寫的原始檔經過編譯,若沒有產生編譯錯誤,則系統將 答案是錯誤的,系統將生成目標檔案,選b。因為c語言中編譯程式是把一個源程式翻譯成目標程式的工作過程。這一過程分...