}
//注意如果採取的是三數中值分割法的時候需要,將頭,中,尾的三個值中間的轉移到陣列的頭部。這樣來進行partition
void quicksort(vector
& arr, int start, int end)
void bubblesort(vector
& arr)}}
void shellsort(vector
& arr)
arr[j] = tmp;}}
}
int up(int i)
int down(int i)
//新增資料用
void minheapfixup(vector
& arr, int i)//i代表插入的位置
arr[i] = tmp;
}//刪除資料用,實際上是通過刪除操作來調整堆
void minheapfixdown(vector
& arr, int i, int n)
arr[i] = tmp;
}void makeheap(vector
& arr)
}void heapsort(vector
& arr)//最小堆得到降序排序
}
void merge(vector
& arr, vector
& copy, int start, int mid, int end)
while (p <= mid)
copy[i++] = arr[p++];
while (q <= end)
copy[i++] = arr[q++];
while (start <= end)
}void mergesort(vector
& arr, vector
& copy, int start, int end)
}void mergesort(vector
& arr)
void selectsort(vector
& vec)
swap(vec[i], vec[minpos]);}}
public
class radixsort ; // 本例項中的最大數是百位數,所以只要到100就可以了
return ((x / a[d]) % 10);
}public
void
radixsort(int list, int begin, int end, int digit)
// 統計各個桶將要裝入的資料個數
for (i = begin; i <= end; i++)
// count[i]表示第i個桶的右邊界索引
for (i = 1; i < radix; i++)
// 將資料依次裝入桶中
// 這裡要從右向左掃瞄,保證排序穩定性
for (i = end; i >= begin; i--)
// 將已分配好的桶中資料再倒出來,此時已是對應當前位數有序的表
for (i = begin, j = 0; i <= end; i++, j++) }}
public
int sort(int list)
// 列印完整序列
public
void
printall(int list)
system.out.println();
}public
static
void
main(string args) ;
radixsort radix = new radixsort();
system.out.print("排序前:\t\t");
radix.printall(array);
radix.sort(array);
system.out.print("排序後:\t\t");
radix.printall(array);}}
幾種常見的排序演算法(C
說到排序,網上一搜就有一大堆的部落格資料,涵蓋各種語言實現,而許多演算法書中更是寫的很詳細,寫此部落格只是記錄下所敲的這幾行 以便日後檢視。直接貼domo ifndef sort h define sort h include include using namespace std template...
幾種常見的排序演算法c 實現
一 選擇排序 演算法思想 對於有n個元素的陣列,一共有n躺排序,每趟排序要保證前i ii項元素已經排好序,對於第i ii趟排序,從第i ii個元素開始遍歷陣列,將當前遍歷元素中最小的值與第i個元素交換。具體 實現如下 include include include using namespace s...
幾種常見排序演算法
幾種常見排序演算法 1氣泡排序 bubble sort 氣泡排序思路 將序列當中的左右元素,依次比較,保證右邊的元素始終大於左邊的元素 第一輪結束後,序列最後乙個元素一定是當前序列的最大值 對序列當中剩下的n 1個元素再次執行步驟1。3.對於長度為n的序列,一共需要執行n 1輪比較 實現 for i...