Java 如何从排序数组中删除重复的元素
正如您在这里所看到的,这是一个按升序对元素进行排序并删除任何重复元素的程序。这里的问题是“删除”代码段。它适用于包含5个元素的数组,其中值(1,3,3,5,5)的顺序是任意的,因为“sort”代码段会处理这个问题。但是,如果你采用一个序列,比如(1,1,1,2,1,3),删除不会完全发生。有人能告诉我哪里出了问题吗Java 如何从排序数组中删除重复的元素,java,arrays,algorithm,bubble-sort,superset,Java,Arrays,Algorithm,Bubble Sort,Superset,正如您在这里所看到的,这是一个按升序对元素进行排序并删除任何重复元素的程序。这里的问题是“删除”代码段。它适用于包含5个元素的数组,其中值(1,3,3,5,5)的顺序是任意的,因为“sort”代码段会处理这个问题。但是,如果你采用一个序列,比如(1,1,1,2,1,3),删除不会完全发生。有人能告诉我哪里出了问题吗 import java.util.*; class Random { static int count=2; public static void main(String[
import java.util.*;
class Random
{
static int count=2;
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println("How many elements are in your set?");// gets your elements
int input=sc.nextInt();
int Subsets=No_of_subsets(input);
// to accept elements
int arr[]=new int[input+2];
accept(arr);
//to sort and delete repeated elements
sortanddelete(arr);
System.out.println("Array a=");
for(int i=0;i<arr.length-count;i++)
{
System.out.println(arr[i]);
}
System.out.println("Count"+count);
}
public static int No_of_subsets(int a )
{
double ab=Math.pow(2, a);
int ans=(int)ab;
System.out.println("Your superset will have "+ans+" subsets");
return (int)ans;
}
public static int[] accept(int a[])
{
Scanner sc=new Scanner(System.in);
System.out.println("Enter your array elements");
for(int i=0;i<a.length-2;i++){
a[i]=sc.nextInt();
}
return a;
}
public static int[] sortanddelete(int a[])
{
int temp;
for(int i=a.length-3;i>0;i--){
for(int j=0;j<i;j++){
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(int i=0;i<a.length-count;i++){
if(a[i]==a[i+1]){
for(int j=i;j<a.length-count;j++){
a[j]=a[j+1];
}
count++;
}
}
return a;
}
import java.util.*;
类随机
{
静态整数计数=2;
公共静态void main(字符串[]args)
{
扫描仪sc=新的扫描仪(System.in);
System.out.println(“集合中有多少个元素?”);//获取元素
int input=sc.nextInt();
int Subsets=没有子集(输入);
//接受元素
int arr[]=新的int[input+2];
接受(arr);
//排序和删除重复元素的步骤
排序删除(arr);
System.out.println(“数组a=”);
对于(int i=0;i您只需按如下方式更改delete for循环:
for(int i=0;i<a.length-count;){
if(a[i]==a[i+1]){
for(int j=i;j<a.length-count;j++){
a[j]=a[j+1];
}
count++;
}
else{
i++;
}
}
用于(int i=0;我认为这是一个阅读/学习java集合的好方法……使用Set-datatype而不是arraylistPerhaps是不起作用的,因为冒泡排序是错误的。您从a.length-3开始向下,这意味着数组中的最后两项从未排序。我刚刚运行了这段代码。这是我所做的唯一更改。对于输入(1,1,1,2,1,3),它工作正常。你能再检查一下吗?输出应该是1,2,3,对吗?记住你应该从for loopMashregi中删除i++非常感谢你是一个救生员。像老板一样解决了谢谢:)