排序算法java实现-创新互联

快速排序

思路:

为上党等地区用户提供了全套网页设计制作服务,及上党网站建设行业解决方案。主营业务为成都网站设计、网站建设、上党网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
  1. 从左边选一个目标元素target。 i = left, j = right;
  2. 从j处右往左遍历,直到找到一个比 target 小的元素;然后从i处左往右遍历,直到找到一个比target 大的元素;
  3. 此时a[j]< target; a[i] >target; 我们将二者互换;
  4. 继续遍历,由于步骤3已经互换元素,此时的a[j] >target, a[i]< target;
    我们继续遍历,重复步骤2 ,3直到i, j相遇
  5. 相遇时,i处之前的元素小于target,i处之后元素均大于target;a[i] 小于target;
  6. 我们将target 和a[i] 互换。i处之前的元素小于a[i],i处之后元素均大于a[i];
  7. 递归地处理左区间和右区间
public static void quickSort(int[] arr) {//        int[] arr = {3,1,4,7,2,9,8};
        doQuickSort(arr, 0, arr.length-1);
    }
    private static void doQuickSort(int[] arr, int left, int right) {if(left >= right) return;
        int base = arr[left];
        int i = left,j = right;
        while (i< j) {while (arr[j] >= base && i< j) {j--;
            }
            while (arr[i]<= base && i< j) i++;
            if(i< j) {int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }

        arr[left] = arr[i];
        arr[i] = base;
        doQuickSort(arr, left, i-1);
        doQuickSort(arr, i+1, right);
    }
归并排序
public static void divideSort(int[] arr, int left, int right) {if(left >= right)
            return;
        //取中间索引
        int mid = (left + right)/2;
        //分别排序
        divideSort(arr,left,mid);
        divideSort(arr,mid+1,right);
        //合并结果
        merge(arr,left,mid,right);
    }
    public static void merge(int[] arr,int left,int mid,int right) {int[] temp = new int[right-left+1];//建立临时数组
        int i = left;
        int j = mid + 1;//指向两个数组的起始位置
        int k = 0;//指向临时数组的起始位置
        while(i<= mid && j<= right) {if(arr[i] >= arr[j]) {//将更小的arr[j]放进临时数组中
                temp[k++] = arr[j++];
            }else {//将更小的arr[i]放进临时数组中
                temp[k++] = arr[i++];
            }
        }
        while(i<= mid) {//前一个数组还有剩余
            temp[k++] = arr[i++];
        }
        while(j<= right) {//前一个数组还有剩余
            temp[k++] = arr[j++];
        }
        //将临时数组中的值更新到原始数组中
        for(int p = 0;p< temp.length;p ++) {arr[left+p] = temp[p];
        }
    }

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

新闻名称:排序算法java实现-创新互联
文章路径:https://www.cdcxhl.com/article14/pjpge.html

成都网站建设公司_创新互联,为您提供网站导航响应式网站标签优化微信小程序小程序开发营销型网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作