二分法、快速排序、堆排序 java实现
来源:互联网 发布:中国新歌声网络战队 编辑:程序博客网 时间:2024/06/05 20:51
1.二分法
private int middleSort(int[] arry) { int high = arry.length; int low = 0; while (low <= high) { int mid = (low + high) / 2; if (arry[mid] == STANTARD) { return mid; } if (arry[mid] > STANTARD) high = mid - 1; if (arry[mid] < STANTARD) low = mid + 1; } return -1; }
2. 快排
private int getMiddle(int[] a, int low, int high) { int tmp = a[low]; while(low < high) { while(low < high && a[high] >= tmp) high--; if(low < high) a[low] = a[high]; while(low < high && a[low] <= tmp) low++; if(low < high) a[high] = a[low]; } a[low] = tmp; return low; }private void quickSort(int[] a, int low, int high) { if(low < high) { int middle = getMiddle(a, low, high); quickSort(a, middle + 1, high); quickSort(a, low, middle - 1); } }
private void sortHeap(int[] a) { buildHeap(a, a.length); for(int i = (a.length - 1); i >= 0; i--) { int tmp = a[i]; a[i] = a[0]; a[0] = tmp; changeHeap(a, 0, i); } } private void buildHeap(int[] a, int size) { for(int i = size/2; i >= 0; i--) { changeHeap(a, i, size); } } private void changeHeap(int[] a, int i, int size) { int leftChild = 2*i + 1; int rightChild = 2*i + 2; int max = i; if((leftChild < size) && a[leftChild] > a[max]) max = leftChild; if((rightChild < size) && a[rightChild] > a[max]) max = rightChild; if (max != i) { int tmp = a[i]; a[i] = a[max]; a[max] = tmp; changeHeap(a, max, size); } }
0 0
- 二分法、快速排序、堆排序 java实现
- 七大排序算法(冒泡,选择,插入,二分法排序,希尔,快速,合并,堆排序)的java实现
- 七大排序算法(冒泡,选择,插入,二分法排序,希尔,快速,合并,堆排序)的java实现(14/8/3更新加入二分排序)
- Java实现快速排序、归并排序、堆排序
- 快速排序,归并排序,堆排序的java代码实现
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- java排序算法二分法 希尔排序 快速排序 归并排序
- 快速排序、堆排序、希尔排序实现
- java实现 二分法 插入排序
- 快速排序与堆排序的Java实现(泛型)
- Java 实现 堆排序 快速排序 以及 TopK问题(一)
- Java 实现 堆排序 快速排序 以及 TopK问题(二)
- 插入排序、选择排序、归并排序、堆排序、快速排序的JAVA实现
- java实现:快速排序,基数排序,计数排序,归并排序,堆排序,希尔排序
- 二分法和快速排序的PHP实现
- 二分法、快速排序
- java实现各种基础排序(冒泡排序、快速排序、直接选择排序、堆排序、直接插入排序、归并排序)
- 快速排序与堆排序 C++实现
- 字节流与字符流的读写学习
- 第六章—函数
- POJ3264--Balanced Lineup(线段树模板题)
- poj解题报告——1953
- 解读CSS布局之-水平垂直居中
- 二分法、快速排序、堆排序 java实现
- Oracle 作业设置
- C语言和C++的不同之处和相通之处
- 动态代理模式1--基本使用
- HDU 5310 Hidden String(暴力枚举)
- Jquery微信朋友圈分享代码
- LoadRunner参数化详解
- Handler2
- HDU-5310-Souvenir(C++ && 简单数学题)