排序方法以及删除算法帮小弟注释一下把
package experiment;
public class DeleteArrayTest {
        public static void sort(int[] arr){          //排序方法
            for(int i = 0;i < arr.length;i++){
                int k =i;
                for(int j=k;j < arr.length;j++){
                    if(arr[j] < arr[k]){
                        k = j;
                    }
                }
                if(k != i){
                    int temp = arr[i];
                    arr[i] = arr[k];
                    arr[k] = temp;
                }
            }
        }
        public static int[] deleteMulti(int[] arr){//删除方法
            int m = 0;
            int n = 0;
            while(m < arr.length){
                arr[n] = arr[m];
                while(arr[n] == arr[m]){
                    m++;
                    if(m == arr.length){
                        break;
                    }
                }
                n++;
            }
            int[] newNum = new int[n];
            for(int i = 0;i < n; i++)
                newNum[i] = arr[i];
            return newNum;
        }
    
    public static void main(String[] args) {
        int[] arr = {7,8,5,4,2,6,4,8,7,6,2,6,9};
        sort(arr);
        int[] newarr = deleteMulti(arr);//用一个数组存排序好的,算不算?
        for(int i=0;i<newarr.length;i++){
         int strr=newarr[i];
            System.out.print(" " + strr);
        }    }
}

解决方案 »

  1.   

     public static void sort(int[] arr){          //排序方法 
                for(int i = 0;i < arr.length;i++){ //循环arr.length次 
                    int k =i;                       //当前循环次数付给局部变量k
                    for(int j=k;j < arr.length;j++){ //循环比较arr.length-k次 
                        if(arr[j] < arr[k]){        // 比较如果选出最小的元素付给k值 一次循环得出最小数arr[k}
                            k = j; 
                        } 
                    } 
                    if(k != i){        //比较是否这次循换最小的是不是第一个比较低元素 
                        int temp = arr[i];  //这个if语句块删出也不妨碍结果 效率低些就是咯
                        arr[i] = arr[k]; 
                        arr[k] = temp; 
                    } 
                } 
            } 
      

  2.   

    public static void sort(int[] arr){          //排序方法 
                for(int i = 0;i < arr.length;i++){ //循环arr.length次 
                    int k =i;                      //当前循环次数付给局部变量k 
                    for(int j=k;j < arr.length;j++){ //循环比较arr.length-k次 
                        if(arr[j] < arr[k]){        // 比较如果选出最小的元素付给k值 一次循环得出最小数arr[k} 
                            k = j; 
                        } 
                    } 
                    if(k != i){        //比较是否这次循换最小的是不是第一个比较低元素 
                        int temp = arr[i];  //比较出的最小值付给元素arr。length的比较数
                        arr[i] = arr[k]; 
                        arr[k] = temp; 
                    } 
                } 
            } 
     大哥比方就是十个数 你第一次比较找出最小的给a【1】 然后再剩下的九个数中在找 出最小的给a【2】 就这样来十次
     
      

  3.   


    public static int[] deleteMulti(int[] arr){//删除方法 
                int m = 0; 
                int n = 0;  //m和n均赋初值为0
                while(m < arr.length){ 
                    arr[n] = arr[m];  //将连续相同的数字中的最后一个数arr[m]赋给连续相同的数字(如果有的话)的第一个元素,即arr[n]
                    while(arr[n] == arr[m]){  //只要相等,就m++直到不等,也就是说找到连续相同的数字中的最后一个数字,即arr[m]
                        m++; 
                        if(m == arr.length){ //如果到达数组最后就退出
                            break; 
                        } 
                    } 
                    n++;  
                } 
                int[] newNum = new int[n]; 
                for(int i = 0;i < n; i++)  //将删除过重复数字的数组重新赋值给另一个数组,个人觉得这步完全没必要,直接return arr;不行吗?
                    newNum[i] = arr[i]; 
                return newNum; 
            } 
      

  4.   


        public static int[] deleteMulti(int[] arr){//删除方法 
                int m = 0; 
                int n = 0;                  //定义两个元素
                while(m < arr.length){     
                    arr[n] = arr[m];           //设置m的最大范围,定义的条件是把m下标的元素赋值给n下标的元素
                    while(arr[n] == arr[m]){     //定义条件是两元素相等,并和n下标的元素比较,如果相同,m就依次增加。
                        m++; 
                        if(m == arr.length){      //到了数组的长度,打断·~ 
                            break; 
                        } 
                    } 
                    n++;                         //n代表的数字是arr[m]元素有不相等的情况下,递增
                } 
                int[] newNum = new int[n];       //新建一数组和n的长度一样,并且赋值给newNum 数组
                for(int i = 0;i < n; i++) 
                    newNum[i] = arr[i]; 
                return newNum;                    //返回数组
            } 这个是删除方法是删除数组中多余的元素,设置一初始值arr[n],让m依次增长和n比较,如果相等的话,只取一个,并且赋值给arr[n],不相等,m依次增加,这样arr[n]是里面没有重复的元素,然后新建一数组并且把arr[n]赋值给这个新建数组·返回这个数组