資料結構第六次作業第一題(quicksort)

2021-10-10 13:15:51 字數 3931 閱讀 4644

不符合oj但是對的排序

#include

#include

/*當資料量大的時候,可用quick排序,因為此時找到的pivot比較接近真的中間值

1.找到樞紐元,可用三均值

2.以樞紐元為比較物件,將陣列分成兩部分

3.遞迴的實現上兩部

*/int count =0;

int index;

void

print

(int a,

int n)

void

insert

(int a,

int n)

}void

swap

(int a,

int i,

int j)

intmid3

(int a,

int left,

int right)

else

//針對小於三個元素的陣列

return0;

}void

quick_sort

(int a,

int left,

int right)

swap

(a, i, right);if

(a[index]

> a[i]

)swap

(a, index, i);}

else

if(count !=0)

i = left;

j = right -1;

while(1

)if(i < right)

swap

(a, i, right -1)

;}printf

("qsort(%d,%d):"

, left, right)

;print

(a,10);

quick_sort

(a, left, i -1)

;quick_sort

(a, i +

1, right);}

elseif(

!(left +

3<= right)

&&(left <=9)

)}intmain()

;scanf

("%d"

,&index)

;quick_sort

(a,0,10

-1);

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

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

return0;

}

對的

(因為=問題)有一組過的??

#include

#include

/*當資料量大的時候,可用quick排序,因為此時找到的pivot比較接近真的中間值

1.找到樞紐元,可用三均值

2.以樞紐元為比較物件,將陣列分成兩部分

3.遞迴的實現上兩部

*/int count =0;

int index;

void

print

(int a,

int n)

void

insert

(int a,

int n)

}void

swap

(int a,

int i,

int j)

intmid3

(int a,

int left,

int right)

else

//針對小於三個元素的陣列

return0;

}void

quick_sort

(int a,

int left,

int right)

swap

(a, i, right);if

(a[index]

> a[i]

)swap

(a, index, i);}

else

if(count !=0)

i = left;

j = right -1;

while(1

)if(i < right)

swap

(a, i, right -1)

;}printf

("qsort(%d,%d):"

, left, right)

;print

(a,10);

quick_sort

(a, left, i -1)

;quick_sort

(a, i +

1, right);}

elseif(

!(left +

3<= right)

&&(left <=9)

)}intmain()

;scanf

("%d"

,&index)

;quick_sort

(a,0,10

-1);

return0;

}

正確的

#include

#define cutoff 3

int index;

void

print

(int a,

int n)

printf

("\n");

}void

swap

(int a,

int i,

int j)

intmid3

(int a,

int left,

int right)

else

return0;

}void

insert

(int a,

int n)

a[j]

= temp;}}

void

quick_sort

(int a,

int left,

int right)

swap

(a, i, right -1)

;printf

("qsort(%d,%d):"

, left, right)

;for

(int k =

0; k <

10; k++

)printf

("\n");

quick_sort

(a, left, i -1)

;quick_sort

(a, i +

1, right);}

else

}int

main()

; pivot = a[index]

;swap

(a, index,9)

;int i =-1

;int j =9;

for(;;

)while

(a[--j]

> pivot)

if(i < j)

swap

(a, i, j)

;else

break;}

swap

(a, i,9)

;printf

("qsort(0,9):");

for(

int k =

0; k <

10; k++

)printf

("\n");

quick_sort

(a,0

, i -1)

;quick_sort

(a, i +1,

9);return0;

}

資料結構第六次作業

這個作業屬於哪個課程 這個作業要求在 homework 11430 這個作業的目標 掌握二叉樹的基本特性 掌握二叉樹的先序 中序 後序的遞迴遍歷演算法 理解二叉樹的先序 中序 後序的非遞迴遍歷演算法 通過求二叉樹的深度 葉子結點數和層序遍歷等演算法,理解二叉樹的基本特性 學號2018204183 一...

演算法與資料結構第六次作業 排序

演算法與資料結構實驗題 5.12 bubble sort 實驗任務 給定乙個 1 n 的排列p 即1到n中的每個數在p中都出現一次。現在要對排列p進行氣泡排序,如下 for int i 1 i n i for int j n,t j i j if p j 1 p j t p j p j p j 1 ...

C語言第六次部落格作業 資料型別

1 定義整型變數code放區位碼,areacode放區碼,digitcode放位碼,one放個位數,two放十位數,three放百位數,four放千位數 2 呼叫scanf 輸入code 3 分離並分別求個十百千位的數 4 區碼 千位數 10 百位數 160 5 位碼 十位數 10 個位數 160 ...