冒泡排序、插入排序

来源:互联网 发布:淘宝dnfcdk怎么来的 编辑:程序博客网 时间:2024/05/18 03:24

冒泡排序:

package com.sort;/** * 冒泡排序类 * @author Maggie * */public class BubbleSort {public void sort(int[] array){// 需要length-1次for(int i = 0; i < array.length-1; i++){// 每一伦比较之后会将最大的数放在最后面for(int j = 0; j < array.length-i-1; j++){if(array[j] > array[j+1]){// 中间量array[j] = array[j] ^ array[j+1];// 交换:此时的array[j+1]其实是原来的array[j]array[j+1] = array[j] ^ array[j+1];// 交换:此时的array[j]其实是原来的array[j+1]array[j] = array[j] ^ array[j+1];}}}}}


插入排序:

package com.sort;/** * 插入排序 * 思路:将待排序列的第一个插入到已排序列的合适位置 * @author Naggie * */public class InsertSort {public void sort(int[] array){// 初始认为第一个数子是有序的,从第二个开始for(int i = 1; i < array.length; i++){// 待排的第一个数int first = array[i];// 待比较的索引 是i的前一个int index = i-1;while(0 <= index && first < array[index]){array[index+1] = array[index];index--;}array[index+1] = first;}}}


测试类:

package com.sort;import java.util.Calendar;/** * 测试类 * @author Maggie * */public class Test{public static void main(String[] args){// 构造一个随机待排序数组int[] array = new int[130000];for(int i = 0; i < array.length; i++){array[i] = (int)(Math.random()*1000);}//int[] array = {99,152,2,3,88,-5,6,56,36};// 测试排序花费时间// 开始排序前的时间Calendar calendar = Calendar.getInstance();System.out.println("排序前的时间是:" + calendar.getTime());// 快排//QuickSort quick = new QuickSort();//quick.sort(array, 0, array.length-1);// 冒泡//BubbleSort bubbleSort = new BubbleSort();//bubbleSort.sort(array);// 插入InsertSort insertSort = new InsertSort();insertSort.sort(array);// 选择排序//SelectSort selectSort = new SelectSort();//selectSort.sort(array);// 因为calender类是单例的,只能getInstance,而且这里需要重新获取一下单例才能更新时间。calendar = Calendar.getInstance();System.out.println("排序后的时间是:" + calendar.getTime());// 输出有序序列//Test.showList(array);}public static void showList(int[] array){for(int i= 0; i < array.length; i++){System.out.print(array[i] + ", ");}}}


0 0
原创粉丝点击