#include "sort.h" int main() { cout << "---此程式實現排序---" << endl << endl; cout << "1.直接插入排序;2.折半插入排序;3.Shell排序;" << endl; cout << "4.冒泡排序;5.快速排序;" << endl; cout << "6.簡單選擇排序;7.堆排序;" << endl; cout << "8.2-路歸併排序;9.2-路歸併排序(非遞迴);10.基數排序;" << endl; cout << "0.退出" << endl << endl; int n,select,*pData = NULL; SLList list; int* increments; while (true){ cout << "請選擇排序演算法:" << endl; cin >> select; switch ( select){ case 1: n = init(&pData); InsertSort(pData,n); break; case 2: n = init(&pData); BInsertSort(pData,n); break; case 3: int incrementsLenth,i; cout << "請輸入增量序列長度:" << endl; cin >> incrementsLenth; increments = new int[incrementsLenth]; cout << "請輸入增量序列:" << endl; for (i = 0; i < incrementsLenth; i++) cin >> increments[i]; n = init(&pData); ShellSort( pData,increments,n,incrementsLenth); delete[] increments; break; case 4: n = init(&pData); BubbleSort(pData,n); break; case 5: n = init(&pData); QuickSort(pData,n); break; case 6: n = init(&pData); SelectionSort(pData,n); break; case 7: n = init(&pData); HeapSort(pData,n); break; case 8: n = init(&pData); MergeSort(pData,n); break; case 9: n = init(&pData); MergeSortNonRecursion(pData, n); break; case 10: n = init(&pData); list.Init(pData,n); list.RadixSort(); list.Arrange(); break; // RadixSort(pData,n); // break; case 0: system("pause"); return 0; default: cout << "Input Error!"<< endl << endl; continue; } cout << "排序結果為:" << endl; if(select == 10) cout << list; else print( pData,0,n - 1); cout << endl; delete[] pData; } system("pause"); return 0; } int init(int** pData) { int size,i; cout << "輸入待排序元素個數" << endl; cin >> size; *pData = new int[size]; cout << "輸入待排序元素"<< endl; for(i = 0 ; i < size; i++) cin >> (*pData)[i]; return size; } template<class ElemType> void print(ElemType data[],int begin,int end) { for (int i = begin; i <= end; i++){ cout << data[i] << " "; } cout << endl; } |