quickSort
来源:互联网 发布:为什么讨厌中国人 知乎 编辑:程序博客网 时间:2024/06/11 01:04
推荐慕课网,刘宇波老师《算法与数据结构》链接:http://coding.imooc.com/class/71.htmlquickSort 课堂笔记/* first */#include <cstdlib>#include <iostream>#include <ctime>using namespace std;template<typename T>int partition(T arr[],int l,int r){ swap(arr[l],arr[rand()%(r-l+1)+l]); T v = arr[l]; int j = l; for(int i = l+1;i <= r;i++){ if(arr[i] < v){ j++; swap(arr[j],arr[i]); } } swap(arr[l],arr[j]); return j;}template<typename T>void _quickSort(T arr[],int l,int r){ if(l < r){ int p = partition(arr,l,r); _quickSort(arr,l,p-1); _quickSort(arr,p+1,r); }}template<typename T>void quickSort(T arr[],int n){ srand(time(NULL)); _quickSort(arr,0,n-1);}int main(){ int arr[] = {9,8,7,6,5,4,3,2,1}; int n = sizeof(arr)/sizeof(arr[0]); quickSort(arr,n); for(int i = 0;i<n;i++) printf("%d ",arr[i]); printf("\n"); return 0;}/* 初步优化 */#include<iostream>#include<cstdlib> #include<ctime>using namespace std;template<typename T>int partition2(T arr[],int l,int r){ swap(arr[l],arr[rand()%(r-l+1)+l]); T v = arr[l]; //arr[l+1...i) <= v ,arr[j...r] >= v int i = l+1,j = r; while(true){ while(i <= r && arr[i] < v) i++; while(j >= l+1 && arr[j] > v) j--; if(i > j) break; swap(arr[i],arr[j]); i++,j++; } swap(arr[l],arr[j]); return j;}template<typename T>void _quickSort2(T arr[],int l,int r){ if(l < r){ int p = partition2(arr,l,r); _quickSort2(arr,l,p-1); _quickSort2(arr,p+1,r); }}template<typename T>void quickSort2(T arr[],int n){ srand(time(NULL)); _quickSort2(arr,0,n-1);}int main(){ int arr[] = {9,8,7,6,5,4,3,2,1}; int n = sizeof(arr)/sizeof(arr[0]); quickSort2(arr,n); for(int i = 0;i<n;i++) printf("%d ",arr[i]); printf("\n"); return 0;}
阅读全文
0 0
- Quicksort
- QuickSort
- quicksort
- quicksort
- QuickSort
- QuickSort
- QuickSort
- QuickSort
- QuickSort
- QuickSort
- quicksort
- QuickSort
- QuickSort
- QuickSort
- quicksort
- quicksort
- QuickSort
- Quicksort
- 476. Number Complement
- 微服务架构的优势与不足
- 二分答案加双指针扫描 gym101194D
- java颜色设置
- 积分
- quickSort
- 《嵌入式开发探秘》之第一章 前言
- Spring的事务管理器
- Android内的HashMap与Java8中的HashMap
- 第十一个Java程序,计算QQ等级。
- 【python】3.6版本使用http.client网络请求示例
- 浅显易懂地解说 Paxos 的算法
- 学生信息系统学习心得四、学籍管理模块的创建
- html5自动弹出软键盘的方法