java 的各种排序算法

编程技术  /  houtizong 发布于 3年前   65
package dasf;public class Sort {/** 创建一新数组 */private static int[] numArray = { 5, 12, 2, 63, 22, 6, 54, 42 };/** 计算新数组的长度 */private static int count = numArray.length;/** * 构造方法 */protected Sort() {}/** * 程序的唯一入口 main 方法 *  * @param args */public static void main1(String[] args) {BubbleSort(numArray);/** 输出 */for (int i = 0; i < count; i++) {System.out.print(numArray[i] + "\t");}}/** * 选择 */public static void SelectSort(int[] array) {       for (int i = 0; i < array.length; i++) {       // 最大值得位置        int max = i;       for (int j = i+1; j < array.length; j++) {       if(array[max] < array[j]){       max = j;       }       }       swap(array,i,max);       }    }/** * 插入法排序 */    public static void InsertSort(int[] array) {        for (int i = 1; i < array.length; i++) {            int tmp = array[i];            int j = i;            while (j > 0 && array[j - 1] < tmp) {                array[j] = array[j - 1];                --j;            }            array[j] = tmp;        }    }    /**     * 冒泡法排序     */    public static void BubbleSort(int[] array) {int temp;for (int i = 0; i < array.length - 1; i++) {for (int j = i + 1; j < array.length; j++) {if (array[i] < array[j]) {temp = array[i];array[i] = array[j];array[j] = temp;}}}}   /**     * 交换数组中i和j的位置     */    private static void swap(int[] array, int i, int j) {        int tmp = array[i];        array[i] = array[j];        array[j] = tmp;    }        /**       * @param pData 需要排序的数组       * @param left  左边的位置,初始值为0       * @param right 右边的位置,初始值为数组长度       */       public static void QuickSort(int[] pData,int left,int right)       {         int i,j;         int first,temp;         i = left;         j = right;         first = pData[left]; //这里选其他的数也行,不过一般选第一个        //一趟快速排序         while(true)         {         //从第二个数开始找大于中枢的数 ,从前面开始找大于pData[left]的数            while((++i)<right-1 && pData[i]<first);             //从最后一个数开始找第一个小于中枢pData[left]的数             while((--j)>left && pData[j]>first);             if(i>=j)                 break;             //交换两边找到的数             temp = pData[i];             pData[i] = pData[j];             pData[j] = temp;            }         //交换中枢         pData[left] = pData[j];         pData[j] = first;         //递归快排中枢左边的数据         if(left<j)           QuickSort(pData,left,j);         //递归快排中枢右边的数据         if(right>i)           QuickSort(pData,i,right);       }          public static void main(String[] args){               int [] pData = new int[5];          for(int i = 0; i< 5; i++)               pData[i] = (int)(Math.random()*100);//Produce 10 random integers                    for(int i = 0; i<pData.length; i++){               System.out.print(pData[i]+" ");            }          QuickSort(pData, 0, pData.length);                    System.out.println("\n***********************");                    for(int i = 0; i<pData.length; i++){               System.out.print(pData[i]+" ");           }      }}
 

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客