Quick Sort & Binary Merge Sort
来源:互联网 发布:最贵域名排行 编辑:程序博客网 时间:2024/05/29 03:41
常用排序算法实现。
//快速排序实现,采用左开右闭区间 [start, end)void quick_sort(vector<int> & arr, int start, int end){ if(end - start <= 1){ return; } int pivot = arr[start]; int i = start; int j = end - 1; while(i < j){ while(i < j && arr[j] > pivot) j--; while(i < j && arr[i] <= pivot) i++; if(i < j){ int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } arr[start] = arr[i]; arr[i] = pivot; quick_sort(arr, start, i); quick_sort(arr, i+1, end);}//二路归并排序实现,采用左开右闭区间 [start, end)void binary_merge_sort(vector<int> & arr, int start, int end){ if(end - start == 1) return; int mid = start + (end - start)/2; binary_merge_sort(arr, start, mid); binary_merge_sort(arr, mid, end); vector<int>::iterator itStart = arr.begin() + start; vector<int>::iterator itEnd = arr.begin() + end; vector<int> ivBuf(itStart, itEnd); int i = 0; int j = mid - start; int k = start; while(i < mid-start && j < end-start){ if(ivBuf[i] < ivBuf[j]){ arr[k] = ivBuf[i]; i++; }else{ arr[k] = ivBuf[j]; j++; } k++; } while(i < mid-start){ arr[k] = ivBuf[i]; i++; k++; } while(j < end-start){ arr[k] = ivBuf[j]; j++; k++; }}
测试验证代码。
void print_vector(vector<int> arr){ for(size_t i = 0; i < arr.size(); i++){ cout<<arr[i]<<" "; } cout<<endl;}void pause(){ char ch; cin>>ch;}int _tmain(int argc, _TCHAR* argv[]){ vector<int> arr; //1. Quick Sort Test cout<<"Quick Sort Test:"<<endl; arr.clear(); arr.push_back(5); arr.push_back(3); arr.push_back(8); arr.push_back(6); arr.push_back(4); print_vector(arr); quick_sort(arr, 0, arr.size()); print_vector(arr); cout<<endl; //2. Binary Merge Sort Test cout<<"Quick Sort Test:"<<endl; arr.clear(); arr.push_back(5); arr.push_back(3); arr.push_back(8); arr.push_back(6); arr.push_back(4); print_vector(arr); binary_merge_sort(arr, 0, arr.size()); print_vector(arr); pause(); return 0;}
如有Bug,欢迎留言交流!!!
0 0
- Quick Sort & Binary Merge Sort
- Quick sort VS Merge sort
- Bubble sort, Insertion sort, merge sort, quick sort, heap sort
- Insertion sort, select sort, Quick sort and Merge sort
- 【LeetCode】Sort List 链表排序- Medium ++(Merge&Quick Sort)
- Quick Sort
- Quick Sort
- quick sort
- quick sort
- quick sort
- Quick Sort
- Quick Sort
- quick sort
- Quick Sort
- Quick Sort
- Quick Sort
- Quick Sort
- Quick Sort
- Scanner的用法
- http协议学习笔记(二)
- 虚拟机的三种网络连接方式
- SDUT 2604 Thrall’s Dream (bfs||单连通)
- 第九周总结
- Quick Sort & Binary Merge Sort
- Linux系统环境快速熟悉
- Tensorflow安装(MAC版)
- 五年开发感受
- 常用的shell命令(持续更新)
- Android一般开发的时候的屏幕适配是怎么做的
- CSS3之盒模型阴影
- SpringMVC验证框架Validation特殊用法
- Java语言基础新手熟知