码迷,mamicode.com
首页 > 编程语言 > 详细

Algs4-2.1.16验证排序是否正确并且未修改

时间:2018-10-27 10:23:23      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:port   没有   []   create   数组元素   lse   ESS   ++   new   

 2.1.16验证。编写一个check()方法,调用sort()对任意数组排序。如果排序成功而且数组中的所有对象均没有被修改则返回true,否则返回false。不要假设sort()只能通过exch()来移动数据,可以信任并使用Array.sort()。
答:在check中将原数组复制一份,然后用sort对原数组进行排序,然后用Array.sort对数组复本排序,然后对比两个排序后的数组元素,全部对应元素相同时返回true,遇到不相同时返回false。
import java.util.Arrays;
public class Example
{
    public static void sort(Comparable[] a)
    {
    }
   
    private static boolean less(Comparable v,Comparable w)
    { return v.compareTo(w)<0;}
   
    private static void exch(Comparable[] a,int i,int j)
    {
        Comparable t=a[i];
        a[i]=a[j];
        a[j]=t;
    }
   
    private static void show(Comparable[] a)
    {
        for (int i=0;i<a.length;i++)
            StdOut.print(a[i]+" ");
        StdOut.println();
    }
   
    public static boolean isSorted(Comparable[] a)
    {
        for (int i=0;i<a.length;i++)
            if(less(a[i],a[i-1])) return false;
        return true;
    }
   
    public static boolean check(Comparable[] a)
    {
        //create a clone array of a
        Comparable[] aClone=new Comparable[a.length];
        for(int i=0;i<a.length;i++)
            aClone[i]=a[i];
        //sort a
        sort(a);
        //sort aClone
        Arrays.sort(aClone);
        //compare array a and aClone
        for(int i=0;i<a.length;i++)
            if (a[i] !=aClone[i]) return false;
        return true;
    }
}

Algs4-2.1.16验证排序是否正确并且未修改

标签:port   没有   []   create   数组元素   lse   ESS   ++   new   

原文地址:https://www.cnblogs.com/longjin2018/p/9860028.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!