方法一:对数组先进行排序,再去重
public static void main(String[] args) {
int array[] = new int[]{0, 15, 1, 52, 2,1, 3, 24, 4, 5,24,9,0,0};
System.out.println(Arrays.toString(qu(array)));
}
public static int[] qu(int[] num) {
for(int i=0;i<num.length-1;i++){
for(int j=0;j<num.length-i-1;j++){
if(num[j]>num[j+1]){
int t=num[j];
num[j]=num[j+1];
num[j+1]=t;
}
}
}
int index = 0;
num[index] = num[0];//将第一个数组元素保留,比较时时从第二个元素开始比较;
for (int i = 1; i < num.length; i++) {
if (num[index] != num[i]) {
num[++index] = num[i];
}
}
index++;//数组元素个数是index+1个
//此时array数组后面依然会有4 4 5 三个元素,但是我们输出截止到index;
return num;
}
方法二:对数组先去重,再排序
public static void main(String[] args) {
//定义一个数组
int[] n=new int[]{1,2,3,3,4,2,2,4,5,3,2,4,5,7,76,8,5,5,67};
//调用函数去重
System.out.println(Arrays.toString(qu(n)));
System.out.println(Arrays.toString(sort(qu(n),0)));
}
//对数组元素去重
public static int[] qu(int [] num){
int[] num1=new int[num.length];
int idx=0;//指针
for(int i=0;i<num.length;i++){
boolean s=false;
for(int j=0;j<=idx;j++){
if(num1[j]==num[i]){
s=true;
break;
}
}
if(!s){//不存在
num1[idx]=num[i];
idx++;
}
}
int[] num2=new int[idx];
for(int i=0;i<num2.length;i++){
num2[i]=num1[i];
}
return num2;
}
//排序 number为0,从小到大排序,其余从大到小
public static int[] sort(int [] num,int number){
for(int i=0;i<num.length-1;i++){
for(int j=0;j<num.length-i-1;j++){
if(number==0){
if(num[j]>num[j+1]){
int t=num[j];
num[j]=num[j+1];
num[j+1]=t;}
}else {
if(num[j]<num[j+1]){
int t=num[j];
num[j]=num[j+1];
num[j+1]=t;}
}
}
}
return num;
}
方法三:对数组先去重,再排序
public static void main(String[] args) {
int[] num=new int[]{12,0,34,54,65,-5,54,67,54,75,4,5,12,5,0};
System.out.println(Arrays.toString(qu(num)));
}
//qu函数,去除重复的数,并排序
public static int[] qu(int[] num){
//去除多余的数
int v=0;
int[] num1=new int[num.length];
for(int i=0;i<num.length;i++){//两层for循环,第一层用于遍历num1
for(int j=0;j<num.length;j++){//第二层用于遍历num
boolean s=true;//定义一个布尔值,用于判断
for(int k=0;k<num1.length;k++){//for循环遍历num1数组,一一与num[j]进行比较,如果存在相等就不储存
if(num1[k]==num[j]){
s=false;
}
}
if(s) {
num1[i] = num[j];
++v;
break;}//如果num1中没有num中的数字元素,就存储在num1中,并退出这一层循环,使i值发生变化
}
}
System.out.println(Arrays.toString(num1));
for(int h=0;h<num.length;h++){
if(num[h]==0){
v++;
break;
}
}
int[] num2=new int[v];
for(int i=0;i<v;i++){
num2[i]=num1[i];
}
System.out.println(Arrays.toString(num2));
//冒泡排序,从小到大排序
for(int i=0;i<num2.length-1;i++){
for(int j=0;j<num2.length-i-1;j++){
if(num2[j]>num2[j+1]){
int t=num2[j];
num2[j]=num2[j+1];
num2[j+1]=t;
}
}
}
return num2;
}