java几种对数组的排序

     // 插入排序

    int [] arr = {4, 2, 1, 5, 3, 9, 7, 8, 6};

    for (int i = 1; i < arr.ength; i++) {

          int j = i;            // j当前要插入的位置

          int temp = arr[j];      // 把要向前插入的元素保存到temp里

               while (j > 0 && temp < arr[j - 1]) {    //  tempx小于当前位置的前一个元素跳出循环   j > 0 短路与是为了防止 j - 1越界运算

                    arr[j] = arra[j - 1];    // 把前一个元素保存到当前位置

                      j--;    // 当前位置向前移

                }

              arr[j] = temp;   // 把需要插入的数据插入到正确的位置上

       }

      System.out.println(Arrays.toString(arr));




    // 快速排序 非递归版 (函数调用即可)

     public static void quickSortF(int[] array) {

         int start = 0;

         int end = array.length - 1;

         LinkedList<int[]> nodeList = new LinkedList<int[]>();

         nodeList.add(new int[]{start, end});

         while (nodeList.size() > 0) {

             int[] node = nodeList.getFirst();

             int s = node[0];

             int e = node[1];

             int temp = array[s];

             while (s < e) {

                 while (s < e && temp < array[e]) {

                     e--;

                 }

                 if (s == e) {

                     break;

                 }

                 array[s++] = array[e];

                 while (s < e && temp > array[s]) {

                     s++;

                 }

                 if (s == e) {

                     break;

                 }

                 array[e--] = array[s];

             }

             array[s] = temp; 

         
             nodeList.removeFirst();

             if (node[0] < s - 1) {       

        
                 nodeList.add(new int[]{node[0], s - 1});

             }

             if (s + 1 < node[1]) {    

           
                 nodeList.add(new int[]{s + 1, node[1]});
             }
            
         }

     }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值