Java实现常见排序算法

来源:互联网 发布:德国小蠊特效药 淘宝 编辑:程序博客网 时间:2024/04/29 16:05

转载请注明出处:http://blog.csdn.net/jevonsCSDN/article/details/55254923【Jevons’Blog】

冒泡排序:

package sortingAlgorithms;import java.util.Arrays;/*** <p>Title: BubbleSorting</p>* <p>Description:冒泡排序 </p>* <p>Company: </p> * @author   jevons* @date         2017年2月15日 下午8:26:41*/public class BubbleSorting {    public static void main(String[] args) {        int[] data = { 7, 8, 9, 2, 1, 3, 4, 5, 6, 10 };// {12,45,6,7,68,99,13};        int temp,counter=0;        for (int i = 0; i < data.length-1; i++) {            for (int j = 0; j < data.length-1-i; j++) {                if(data[j]>data[j+1]){                    temp= data[j+1];                    data[j+1]=data[j];                    data[j] = temp;                }                counter++;//计数            }        }        System.out.println(Arrays.toString(data));        System.out.println("比较次数为:"+counter);    }}

快速排序

package sortingAlgorithms;import java.util.Arrays;/*** <p>Title: FastSorting_SimpleVersion</p>* <p>Description: 快速排序算法</p>* <p>Company: </p> * @author   jevons* @date         2017年2月16日 下午1:24:37*/public class FastSorting_SimpleVersion {    public static void main(String[] args) {        int[] data = { 12, 44, 7, 66, 43, 33, 1, 22 };        sort(data, 0, data.length - 1);        System.out.println(Arrays.toString(data));    }    public static void sort(int[] array, int lo, int hi) {        if (lo >= hi) {            return;        }        int initLo=lo;        int initHi=hi;        int key = array[lo];        while (lo < hi) {            while (array[hi] >= key && hi > lo) {                hi--;            }            array[lo] = array[hi];            while (array[lo] <= key && lo < hi) {                lo++;            }            array[hi] = array[lo];        }        array[lo]=key;        //递归        sort(array, initLo, hi-1);        sort(array,hi+1,initHi);    }}

插入排序

package sortingAlgorithms;import java.util.Arrays;/*** <p>Title: InsertionSorting</p>* <p>Description: 插入排序,效率比冒泡排序高近一倍</p>* <p>Company: </p> * @author   jevons* @date         2017年2月16日 下午12:56:23*/public class InsertionSorting {    public static void main(String[] args) {        int[] data =  { 7, 8, 9, 2, 1, 3, 4, 5, 6, 10 };//{12,44,7,66,43,33,1,22};        insertSort(data);        System.out.println(Arrays.toString(data));    }    private static int[] insertSort(int[] data) {        if (data == null || data.length < 2) {            return data;        }        int counter =0;//计数器        for (int i = 1; i < data.length; i++) {            int temp = data[i];            int j=i;            while(j>0&&data[j-1]>temp){                data[j]=data[j-1];                j--;                counter++;//计数                System.out.println(Arrays.toString(data));            }            data[j]=temp;        }        System.out.println("比较次数为:"+counter);//本例数据用冒泡算法需比较45次,而插入排序只需19次        return data;    }}
0 0
原创粉丝点击