快速 歸併和基數排序

2022-06-16 11:00:14 字數 1444 閱讀 8066

快速排序

public

class

quicksort

while (arr[r]>pivot)

if(l>=r)

temp=arr[l];

arr[l]=arr[r];

arr[r]=temp;

if(arr[l]==pivot)

if(arr[r]==pivot)

if(l==r)

if(leftif(right>l)}}

}

public

class

mergesort

}/*** 為了將分開的每一組按順序合併

* @param

arr 將要處理的陣列

* @param

left 左索引

* @param

mid 中間索引

* @param

right 右索引

* @param

temp 臨時陣列

*/private

static

void merge(int arr,int left,int mid,int right,int

temp)

else

}//將剩餘的數字填充到temp陣列

while(l<=mid)

while(j<=right)

//將臨時陣列的元素拷貝到temp

t=0;

int templeft =left;

while(templeft<=right)

}}

public

class

radixsort

}int maxlength =( max+"").length();

//定義10個桶,每個通最多可以裝和原陣列相同的個數

int bucket = new

int[10][arr.length];

//記錄每個桶中的原數個數,如bucketelementscounts[0]記錄1號桶中的數

//相應位數是幾就放到幾號桶中,比如十位數是0在第二輪就放到0號桶中

int bucketelementscounts=new

int[10];

//每一輪都按設定的順序將元素放入對應的桶中,直到完成最後一輪

intindex;

for (int i = 0,n=1; i < maxlength; i++,n*=10)

//將桶中的資料放入到原陣列中

index = 0;

for (int k = 0; k < bucketelementscounts.length; k++)

}bucketelementscounts[k]=0;//

將桶中的資料歸0

} }

}}

歸併與基數排序

1.輸入10 5個只有一位數字的整數,可以用o n 複雜度將其排序的演算法是 桶排序 2.資料序列只能是下列哪種排序演算法的兩趟排序結果?b a 氣泡排序 b 快速排序 c 插入排序 d 堆排序 解析 如果是氣泡排序,末尾是最大或最小的兩個數 如果是插入排序,最前面應該是最大或最小的兩個數 如果是堆...

快速排序 基數排序

快速排序 includevoid quicksort int r,int low,int high r i pivot quicksort r,low,i 1 quicksort r,j 1 high int main inti printf 原 for i 0 i 10 i printf d a ...

歸併排序和基數排序

空間複雜度 o n o n o n 時間複雜度 o n log2 n o nlog 2n o nlog 2 n 穩定性 穩定 適用於順序儲存和鏈式儲存 typedef int elemtype 合併兩個相鄰的有序線性表 void merge elemtype a,int low,int mid,in...