快速排序
publicclass
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)}}
}
publicclass
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)
}}
publicclass
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...