交换类排序:冒泡排序和快速排序
来源:互联网 发布:iphoto下载 mac 编辑:程序博客网 时间:2024/06/07 17:06
冒泡排序
void Bubblesort(int *arr, int len){ for (int i = 0; i < len - 1; i++) { for (int j = 0; j < len - 1 - i; j++) { int temp = 0; if (arr[j]>arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } }
快速排序
//快速排序递归实现//快速排序(一)int Partion(int array[], int left, int right){ int begin = left; int end = right; int key = array[right]; while (begin < end) { //从前往后找比key大的元素,找到之后停止 while (begin<end && array[begin] <= key) begin++; //从后往前找比key小的元素,找到之后停止 while (begin < end && array[end] >= key) end--; if (begin < end) { std::swap(array[begin],array[end]); begin++; end--; } } //处理begin!=right,begin>right if (begin!=right && array[begin]>array[right]) { std::swap(array[begin],array[right]); return begin; } return right;}//快速排序(二),挖坑法int Partion(int array[], int left, int right){ int begin = left; int end = right; int key = array[right]; while (begin < end) { while (begin < end && array[begin] <= key) begin++; if (begin < end) { array[right] = array[begin]; } while (begin < end && array[end] >= key) end--; if (begin < end) { array[begin] = array[end]; } } array[begin] = key; return begin;}//快速排序(三)int Partion(int array[], int left, int right){ int Cur = left; int Prev = Cur - 1; int key = array[right]; while (Cur < right) { while (array[Cur] <= key && ++Prev != Cur) std::swap(array[Prev], array[Cur]); ++Cur; } std::swap(array[++Prev], array[right]); return Prev;}void QuickSort(int array[], int left, int right){ if (left < right) { int div = Partion(array,left,right); QuickSort(array,left,div-1); QuickSort(array,div + 1,right); }}
//快速排序(四)非递归实现void QuickSort(int array[], int left, int right){ stack<int> s; s.push(right); s.push(left); int div = 0; while (!s.empty()) { left = s.top(); s.pop(); right= s.top(); s.pop(); if (left<right) { div = Partion(array,left,right); s.push(right); s.push(div+1); s.push(div-1); s.push(left); } }}
阅读全文
0 0
- 交换排序----冒泡排序 和 快速排序
- 交换排序:冒泡排序和快速排序
- 交换排序--冒泡排序和快速排序
- 交换排序--冒泡排序和快速排序
- 交换类排序:冒泡排序和快速排序
- 排序-交换类排序-快速排序、归并排序、冒泡排序
- 交换排序(冒泡排序和快速排序)
- 算法-排序-交换排序(冒泡和快速排序)
- 1.交换排序(冒泡排序和快速排序)
- 1.交换排序:冒泡排序和快速排序
- Java实现交换排序 之 冒泡排序和快速排序
- 交换排序(冒泡排序、快速排序)
- 交换排序(冒泡排序,快速排序)
- 交换排序:冒泡排序,快速排序
- (一)交换排序:冒泡排序,快速排序
- 交换排序(冒泡排序,快速排序)
- 交换排序(冒泡排序、快速排序)
- 交换排序之--冒泡排序,快速排序
- UE4_蓝图
- 资讯精选|ARM免预付授权费用计划增加Cortex-M3架构设计 加速物联网发展
- 将myeclipse中web项目导入eclipse中运行
- String、StringBufer和StringBuilder
- C
- 交换类排序:冒泡排序和快速排序
- 配置host文件
- 模拟实现strstr、strrstr
- spring+cxf发布服务报错Error creating bean with name 'org.apache.cxf.jaxws.spring.NamespaceHandler$SpringSe
- 以POST方式访问wcf方法
- IntelliJ IDEA 配置Gradle运行SpringBoot Web项目(tomcat容器)
- Android程序员学WEB前端(2)-HTML(2)-锚点链接列表表单-Sublime
- PHP isset()与empty()的使用区别详解
- node连接数据库mysql