常见的排序算法(Java实现):冒泡、插入、选择、快速排序
来源:互联网 发布:加工中心中心钻编程 编辑:程序博客网 时间:2024/06/04 19:13
常见的排序算法(Java实现):冒泡、插入、选择、快速排序
/** * 常见的排序算法实现 * 1.冒泡排序 * 2.插入排序 * 3.选择排序 * 4.快速排序 * @author 健身小码哥 * */public class SortManager {/** * 冒泡排序 * 原理:每次遍历,将剩余子数组中的最大值移动到子数组的尾端 * @param array */public void bubbleSort(int array[]){if(array == null || array.length < 2){return;}int length = array.length;for(int i = 0 ; i < array.length ; i++){for(int j = 0 ; j < length - i -1; j++){//将较大的元素向后移动if(array[j] > array[j+1]){int temp = array[j+1];array[j+1] = array[j];array[j] = temp;}}}}/** * 插入排序 * @param array */public void insertionSort(int array[]){if(array == null || array.length < 2){return;}for(int i = 1 ; i < array.length ; i++){for(int j = i ; j > 0 ; j--){if(array[j] < array[j-1]){swap(array,j,j-1);}}}}/** * 选择排序 * @param array */public void selectionSort(int array[]){if(array == null || array.length < 2){return;}for(int i = 0 ; i < array.length ; i++){int maxPos = 0;for(int j = 0 ; j < array.length -i; j++){maxPos = array[maxPos] > array[j] ? maxPos : j;}swap(array , maxPos , array.length - i - 1);}}/** * 快速排序,选取最后一个元素作为参考,输出数组的非递减序列 * @param array待排序的数组 * @param start要排序数组的开始位置 * @param end要排序数组的结束位置 */public void quickSort(int array[] , int start , int end){if(array == null || array.length < 2 || start >= end){return;}//选取最后一个元素作为参考int flag = array[end];//记录大于flag的第一个元素位置int i = start-1;//标识当前遍历的位置int j = start ;while(j < end){//当元素小于flag时,与++i进行交换if( array[j] < flag){i++;swap(array,i,j);}j++;}//将flag交换到合适的位置int mid = i + 1;swap(array,mid,end);//对左右子数组进行递归排序quickSort(array,start,mid -1);quickSort(array,mid + 1,end);}/** * 快速排序,选取最后一个元素作为关键值,输出数组的非递减序列 * @param array待排序的数组 * @param start要排序数组的开始位置 * @param end要排序数组的结束位置 */public void quickSort2(int array[] , int start , int end){if(array == null || array.length < 2 || start >= end){return;}int flag = array[end];//1.从左向右遍历,寻找比flag大的元素left//2.从右向左遍历,寻找比flag小的元素right//3.交换元素位置,直到left >= right , 将参考值交换到合适的位置int left = start;int right = end;while(left < right){if(array[left] <= flag){left++;}else if(array[right] >= flag){right--;}else{swap(array,left,right);}}//将flag交换到合适的位置swap(array,left,end);//对左右子数组进行递归排序quickSort2(array,start,left -1);quickSort2(array,left + 1,end);}/** * 交换数组中两元素的位置 * @param array * @param x * @param y */private void swap(int array[] , int x , int y){int temp = array[x];array[x] = array[y];array[y] = temp;}}
阅读全文
1 0
- 常见的排序算法(Java实现):冒泡、插入、选择、快速排序
- 冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
- 几种常见排序算法的实现(冒泡法,选择法,插入法,快速排序、堆排序)
- Java中常见的数组排序算法(包括冒泡,选择,插入,快速排序)
- 选择排序&插入排序&冒泡排序&快速排序算法实现
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 常见排序的实现 c++ 冒泡排序 插入排序 选择排序 快速排序
- java简单实现冒泡、快速、选择、插入排序算法
- Java实现冒泡,快速,选择,插入排序算法
- 七大排序算法(冒泡,选择,插入,二分法排序,希尔,快速,合并,堆排序)的java实现
- java实现冒泡排序,插入排序,选择排序,快速排序
- 001-简单的java代码实现几种排序算法(插入,快速,冒泡,选择)
- Java排序算法(冒泡排序、选择排序、插入排序、反数组排序、快速排序)例子
- java实现冒泡,选择,插入,快速排序
- 常见比较排序算法的实现(归并排序、快速排序、堆排序、选择排序、插入排序、希尔排序)
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- java实现各种排序算法(包括冒泡排序,选择排序,插入排序,快速排序(简洁版))及性能测试
- 常见排序算法(冒泡、选择、插入、快速、归并C++实现)
- bootstrapvalidator & bootstrap modal 验证消息 重复显示
- 《富爸爸穷爸爸》书摘-富人的投资
- 搭建环境-怎样使用nat和桥接方式解决虚拟机联网问题
- 为什么jdbc链接时 只要class.forname("com.mysql.jdbc.Driver")即可?
- MD5加密和转码
- 常见的排序算法(Java实现):冒泡、插入、选择、快速排序
- 如何获取int型数组的长度
- 动画重定向技术分析及其在Unity中的应用
- MVVM模式下的Visiblox Chart使用
- 常用排序算法
- 《富爸爸穷爸爸》书摘-不要为钱而工作
- [P1281]书的复制[DP]
- 移动web前端小结(一)
- leetcode 181. Employees Earning More Than Their Managers