java实现各种排序算法
来源:互联网 发布:实对称矩阵是正交矩阵 编辑:程序博客网 时间:2024/06/12 00:31
主要实现了插入,冒泡,选择,归并,快速排序
代码如下:
package cn.com.cnn;//从小到大的顺序public class MySort { public static void main(String[] args) { int[] data = {3, 6, 4, 1, 5, 2}; MySort mySort = new MySort(); int[] result1 = mySort.chooseSort(data); for(int i : result1) { System.out.print(i); } int[] result2 = mySort.quickSort(data); for(int i : result2) { System.out.print(i); } int[] result3 = mySort.insertSort(data); for(int i : result3) { System.out.print(i); } int[] result4 = mySort.mergeSort(data); for(int i : result4) { System.out.print(i); } int[] result5 = mySort.bubbleSort(data); for(int i : result5) { System.out.print(i); } } //插入排序 public int[] insertSort(int[] data) { for(int i = 1; i < data.length; i++) { //0---j是现有的有序序列 int j = i - 1; int temp = data[i]; while(j >= 0 && temp < data[j]) { data[j + 1] = data[j]; j--; } data[j + 1] = temp; } return data; } //冒泡排序 public int[] bubbleSort(int[] data) { for(int i = 1; i < data.length; i++) { for(int j = 0; j < data.length - i; j++) { if(data[j] > data[j + 1]) { int temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; } } } return data; } //选择排序 public int[] chooseSort(int[] data) { for(int i = 0; i < data.length; i++) { int minIndex = i; for(int j = i + 1; j < data.length; j++) { //找[i+1,length]中的最小值 if (data [j] < data[minIndex]) { minIndex = j; } } int swap = data[i]; data[i] = data[minIndex]; data[minIndex] = swap; } return data; } //快速排序 public int[] quickSort(int[] data) { int[] result = quickSortCore(data, 0, data.length - 1); return result; } public int[] quickSortCore(int[] data, int leftIndex, int rightIndex) { if(leftIndex >= rightIndex) { return null; } int i = leftIndex; int j =rightIndex; int centerNum = data[leftIndex]; while(i < j) { while(i < j && data[j] >= centerNum) j--; data[i] = data[j]; while(i < j && data[i] <= centerNum) i++; data[j] = data[i]; } data[j] = centerNum; quickSortCore(data, leftIndex, j - 1); quickSortCore(data, j + 1, rightIndex); return data; } //归并排序 public int[] mergeSort(int data[]) { int middIndex = (data.length - 1) / 2; mergeSortCore(data, 0, middIndex); mergeSortCore(data, middIndex + 1, data.length - 1); merge(data, 0, middIndex, data.length - 1); return data; } public int[] mergeSortCore(int data[], int leftIndex, int rightIndex) { if(leftIndex < rightIndex) { int middIndex = (leftIndex + rightIndex) / 2; mergeSortCore(data, leftIndex, middIndex); mergeSortCore(data, middIndex + 1, rightIndex); merge(data, leftIndex, middIndex, rightIndex); } return data; } public int[] merge(int[] data, int leftIndex, int middIndex, int rightIndex) { int[] tempArr = new int[rightIndex - leftIndex + 1]; int i = leftIndex; int j = middIndex + 1; int k = 0; while(i <= middIndex && j <= rightIndex) { if(data[i] < data[j]) { tempArr[k++] = data[i++]; } else { tempArr[k++] = data[j++]; } } //将剩余部分放回中间数组 while(i <= middIndex) { tempArr[k++] = data[i++]; } while(j <= rightIndex) { tempArr[k++] = data[j++]; } int m = 0; while(leftIndex <= rightIndex) { data[leftIndex++] = tempArr[m++]; } return data; }}
阅读全文
0 0
- 各种排序算法java实现
- 各种排序算法java实现
- 各种排序算法java实现
- 各种排序算法Java实现
- 各种排序算法java实现
- 各种排序算法java实现
- 各种排序算法java实现
- 各种排序算法java实现
- 各种排序算法java实现
- 各种排序算法java实现
- 各种排序算法java实现
- 各种排序算法java实现
- 各种排序算法java实现
- 各种排序算法java实现
- 各种排序算法java实现
- 各种排序算法java实现
- 各种排序算法java实现
- 各种排序算法java实现
- U-Boot-1.1.6顶层目录mkconfig脚本配置文件详细分析
- Django 1.11 前端数据异步加载(前端页面单独请求用户登录状态)
- 顺序表应用8:最大子段和之动态规划法
- Codeforces Round #435 (Div. 2) B, C 题解
- HTML5 新增标签
- java实现各种排序算法
- 对象的构造与析构(2) 构造函数规则
- springMVC配置文件
- Jq中的遍历
- 万恶的2017 ACM/ICPC Asia Regional Qingdao Online 1011 A Cubic number and A Cubic Number
- python︱大规模数据存储与读取、并行计算:Dask库简述
- Js实现百度搜索框提示功能(利用百度接口)
- uboot2013-10移植(一)--Makefile注释
- 对象的生存周期对比