java 快速排序 插入排序 选择排序
来源:互联网 发布:淘宝注册账号打电话 编辑:程序博客网 时间:2024/06/02 04:25
package 未做_快速排序_归并排序_二分查找_等排序;/* * 快速排序 * 使用递归方法 * 把数组拆分为两个子数组加上一个基准元素: * 1.选取最后一个元素作为基准元素,index变量记录最近一个小于基准元素的元素所在的位置, * 初始化为start- 1,发现新的小于基准元素的元素,index加1。 * 从第一个元素到倒数第二个元素,依次与基准元素比较, * 小于基准元素,index加1,交换位置index和当前位置的元素。 * 循环结束之后index+1得到基准元素应该在的位置,交换index+1和最后一个元素。 * 2.分别排序[start, index], 和[index+2, end]两个子数组 * */public class QuickSort {public static void main(String args[]){int[] arr = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3 }; quictSort(arr);print(arr);}public static void print(int[] arr){for(int i=0;i<arr.length;i++){System.out.print(arr[i]);System.out.print(",");}}public static void jiaohuan(int[] arr, int index1, int index2){int temp = arr[index1];arr[index1] = arr[index2];arr[index2] = temp;}public static void quictSort(int[] arr){quictSort(arr, 0 , arr.length-1);}public static void quictSort(int[] arr, int start, int end){if(arr == null || end<2){return ;//若只有1个元素或没有元素,没必要排序,停止程序}int part = partition(arr, start , end);//求基准元素应该所在的位置if(part == start){quictSort(arr, part+1, end);//递归处理 part之后的数组元素}else if(part == end){quictSort(arr, start, part-1);//递归处理 part之前的数组元素}else{quictSort(arr, start, part-1);//递归处理 part之前的数组元素quictSort(arr, part+1, end);//递归处理 part之后的数组元素}}public static int partition(int[] arr, int start, int end){int value = arr[end];//选取最后一个元素为基准元素int index = start-1;//为了从start---end-1 进行比较 每次index+1;for(int i=start; i<end; i++){if(arr[i]<value){//若元素小于最后一个元素的值 则index +1 继续向前走index++;if(index != i){//交换当前index 与i位置的值jiaohuan(arr, index, i);}}}if((index+1) != end ){jiaohuan(arr, index+1, end);}return index+1;//得到基准元素所在的位置}}
package 未做_快速排序_归并排序_二分查找_等排序;/* 插入排序 * 升序 * 1.选取第一个元素为基准元素 * 2.若第二个元素小于基准元素,则把第二个元素插入到第一个元素的前面,把第二个元素作为基准元素 * 3.直到所有元素插入为止 */public class insertSort {public static void main(String args[]){int[] arr = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3 };Sort(arr);print(arr);}public static void Sort(int[] arr){if(arr == null || arr.length<2){return ;}for(int i=1;i<arr.length;i++){//从第i个元素开始与i之前的元素进行比较 若当前元素小于i之前的元素 则进行交换值,直到交换到第0个元素为止int value = arr[i];int position = i;//记录当前元素的位置for(int j=i-1;j>=0;j--){if(arr[j]>value){arr[j+1]=arr[j];//若当前值前面的值大于当前值,则把前面的值赋给后面的值position-=1;//记录value应该在的位置}else{break;}}arr[position] = value;//把当前值放在当前位置上}}public static void print(int[] arr){for(int i=0;i<arr.length;i++){System.out.print(arr[i]);System.out.print(",");}}}
package 未做_快速排序_归并排序_二分查找_等排序;//选择排序public class SelectSort {public static void main(String args[]){int[] arr = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3 };Sort(arr);print(arr);}public static void Sort(int[] a) { if (a == null || a.length <= 0) { return; } for (int i = 0; i < a.length; i++) { int min = i; /* 将当前下标定义为最小值下标 */ for (int j = i + 1; j < a.length; j++) { if (a[min] > a[j]) { /* 如果有小于当前最小值的关键字 */ min = j; /* 将此关键字的下标赋值给min */ } } if (i != min) {/* 若min不等于i,说明找到最小值,交换 */ int tmp = a[min]; a[min] = a[i]; a[i] = tmp; } } } public static void print(int[] arr){for(int i=0;i<arr.length;i++){System.out.print(arr[i]);System.out.print(",");}}}
0 0
- java 快速排序 插入排序 选择排序
- Java 排序 快速排序 冒泡排序 选择排序 插入排序
- java实现冒泡排序,插入排序,选择排序,快速排序
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- 插入排序,选择排序和快速排序
- Java实现排序(插入排序+冒泡排序+选择排序+ Shell排序+快速排序)
- Java排序算法(冒泡排序、选择排序、插入排序、反数组排序、快速排序)
- Java排序算法(冒泡排序、选择排序、插入排序、反数组排序、快速排序)例子
- java基础------》数据结构---》交换排序(冒泡排序,快速排序),选择排序,系统排序,插入排序
- Java常见排序:冒泡排序、快速排序、选择排序、插入排序、归并排序
- 冒泡排序 快速排序 插入排序 堆排序 选择排序
- 插入排序、选择排序、冒泡排序、快速排序、堆排序
- 数组排序:快速排序,选择排序,冒泡排序,插入排序
- java插入,希尔,快速,冒泡,选择排序
- java实现冒泡,选择,插入,快速排序
- Java实现排序(快速排序、冒泡排序、选择排序、基数排序、插入排序)
- Java分别实现冒泡排序、插入排序、快速排序、选择排序、交换排序
- java冒泡排序、插入排序、快速排序、选择排序、堆排序
- 使用友盟SDK提交Appstore审核被拒的常见解决方法
- 32位保护模式学习小结(2)---任务的隔离和特权级保护
- HDU 4496 D-City (并查集)
- poj 2299 Ultra-QuickSort
- 【PAT】Dijkstra+最短路径种数(★)+输出路径+卡内存
- java 快速排序 插入排序 选择排序
- 数据结构
- 进行SparkRDD各类操作----SparkMllib操作基础
- ajax
- 常用标签
- Thrift使用总结篇
- vim常用命令
- awk整理
- 解决使用 Theme.AppCompat.XX 主题控件默认带阴影的问题