常见排序算法的java实现
来源:互联网 发布:信用卡在淘宝怎么套现 编辑:程序博客网 时间:2024/04/29 16:46
冒泡排序
排序思想:越大的元素会经由交换慢慢“浮”到数列的顶端
import java.util.*;public class bubbleSort{/** * @冒泡排序 * @author Weixuan * @date 2016/04/12 */public static void bubblesort(int[] array){for (int i=0;i<array.length-1;i++){int temp;for (int j= 0;j<array.length-1-i;j++){if (array[i]>array[i+1]){//相邻元素对比temp = array[i];array[i] = array[i+1];array[i+1] = temp;}}}} public static void print(String comment,int[] array){ System.out.print(comment+":"); for (int i:array){ System.out.print(i+" "); } System.out.println(); } public static void main(String[] args) {int[] array =new int[]{12,345,3,-23,67,23,8,17,123,43};print("排序前", array);Arrays.sort(array, 0, array.length);print("排序后", array);}}
快速排序
排序思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
public class quicksort {/** * @快速排序算法 分而治之 递归不断缩小范围 * @author wx * @date 2016/04/12 */public static int quicksort(int[] array,int low,int high){ //第一个元素作为本次快排的中轴进行对比 int temp = array[low]; while(low<high){ //从右到左 while(low <high && array[high]>=temp){ high--; } array[low] = array[high]; //从左到右 while(low <high && array[low]<=temp){ low++; } array[high] = array[low]; } array[low] = temp; return low; }public static void _quicksort(int[] array,int low,int high){//进行一次快排,并获取中轴indexif(low<high){//迭代的临界条件int middle = quicksort(array,low,high);_quicksort(array, low, middle-1);_quicksort(array, middle+1,high);}}public static void sort(int[] array){//数组不能为空if(array.length>0){ _quicksort(array,0,array.length-1);}}public static void print(String comment,int[] array){ System.out.print(comment+":"); for (int i:array){ System.out.print(i+" "); } System.out.println(); }public static void main(String[] args) { int[] array = new int[]{12,345,3,-23,67,23,8,17,123,43}; print("排序前", array); sort(array); print("排序后", array);}}
归并排序
排序思想:将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
import java.math.*;public class mergeSort {/** * @content 归并排序 两两有序序列进行合并 * @author wx * @date 2016/04/25 */public static void mergeSort(int[] array,int low,int middle,int high){//声明临时数组存储排序后的序列int[] temArr = new int[array.length];int mid = middle+1;int tempStart = low;int third = low;//每次取左右两部分排序中最小值插入temArrwhile(low <= middle && mid<=high){if(array[low]<= array[mid]){temArr[third++] = array[low++];}else{temArr[third++] = array[mid++];}}//将剩余的有序元素直接插入临时数组中//左部分序列中剩余元素插入到tempArr中while(low <= middle){temArr[third++] = array[low++];}//右部分序列中剩余元素插入到tempArr中while(mid <= high){temArr[third++] = array[mid++];}//把temArr元素移动到正式表while(tempStart <=high){array[tempStart] = temArr[tempStart++];}}//待排序序列拆分,排序、合并public static void _mergeSort(int[] array,int low,int high){if(low < high){ //迭代的临界条件int middle =((low+high)/2);_mergeSort(array,low,middle);_mergeSort(array, middle+1, high);mergeSort(array,low,middle,high);}}public static void sort(int[] array,int low,int high){if(array.length>0){_mergeSort(array,low,high);}}public static void print(String comment,int[] array){ System.out.print(comment+":"); for (int i:array){ System.out.print(i+" "); } System.out.println(); }public static void main(String[] args) {int array[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51}; print("排序前", array);sort(array, 0, array.length-1);print("排序后", array);}}
0 0
- 常见排序算法的java实现
- 常见经典排序算法的java实现
- 常见排序算法的java实现
- 常见内排序算法的java实现
- 常见排序算法的Java实现
- 常见的排序算法,Java实现
- Java实现常见的排序算法
- Java实现常见的排序算法
- 常见的排序算法 Java实现
- Java实现常见的排序算法
- 常见排序算法--java实现
- java实现常见排序算法
- Java实现常见排序算法
- 常见排序算法java实现
- 常见排序算法java实现
- Java实现常见的排序算法---归并排序
- Java实现常见的排序算法--堆排序
- 常见排序算法的实现
- 补第三周作业--冒泡排序和归并排序
- 深入理解Javascript window对象
- css框模型(padding,margin,border)
- IOS:FAQ
- 安卓入门问题记录
- 常见排序算法的java实现
- Struts2 在页面定义变量 s:set标签
- android ota 升级包制作分析 (2 包结构)
- GD库
- 补 判断一个数为质数的算法
- Fastjson技术内幕
- Android多线程研究(8)——Java5中Futrue获取线程返回结果
- Spring Aop 报错error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator
- Cocos2d-x学习笔记(12)(CCControlSwitch开关、CCControlSlider滑动条、CCControlButton按钮)