PDA

View Full Version : گروه بندی داده های یک آرایه



nedaazadi
دوشنبه 10 مرداد 1390, 13:09 عصر
سلام دوستان
من آرایه ای مرتب شده از اعداد صحیح دارم . میخواهم داده های تکراری را در گروهها یا آرایه های جدید قرار دهم
به عنوان مثال :

int num[] = {20,21,21,24,26,26,26,30}; output : A={20} B={21,21} C={24} D={26,26,26} E={30}


لطفا راهنمایی بفرمائید

javaphantom
دوشنبه 10 مرداد 1390, 22:51 عصر
اول آریه رو سرت کن یعنی اینطوری {۲۰و۲۰و۲۰و۲۲و۲۳و۲۵و۲۵} الان این آرایه از بزرگ به کوچیک سرت شده حالا بیا اولی رو با دومی مقایسه کن اگر برابر بودن در یک آرایه قرار بده و بعد دومی رو با سومی تا اینکه قبلی با بعدی برابر نباشه که اون می شه یک آرایه جدید دیگه درست کن

nedaazadi
سه شنبه 11 مرداد 1390, 12:32 عصر
اول آریه رو سرت کن یعنی اینطوری {۲۰و۲۰و۲۰و۲۲و۲۳و۲۵و۲۵} الان این آرایه از بزرگ به کوچیک سرت شده حالا بیا اولی رو با دومی مقایسه کن اگر برابر بودن در یک آرایه قرار بده و بعد دومی رو با سومی تا اینکه قبلی با بعدی برابر نباشه که اون می شه یک آرایه جدید دیگه درست کن



آرایه ورودی رندوم هست و اصلا مشخص نیست چند تا آرایه جدید نیاز داریم که اونها رو بسازم. چطوری من می تونم در زمان اجرا آرایه های جدیدی که نه تعدادشون نه نامشون و نه طولشون مشخص هست رو بسازم؟
این کد اشتباهه ؟


for(i=1;i<y;i++)
for(j=i+1;j<y;j++)
if(timesort[i]!=timesort[j])
{ String Group="G";
Group=Group+Integer.toString(i);
double Group[]=new double[1];
Group[1]=timesort[i];
j=y;


}

Mirmahdi90
شنبه 15 مرداد 1390, 14:58 عصر
با سلام به همه
من تازه با این سایت آشنا شدم و از این بابت خوشحالم
امیدوارم مطالب این سایت مثل خیلیای دیگه به درد منم بخوره و همینطور من هم بتونم برای اعضای اون مفید باشم

اما جواب سوال شما
این تابع که من نوشتم یه آرایه مرتب شده میگیره و همون چیزی رو که شما به عنوان خروجی میخواین برمیگردونه امیدوارم منظورتون رو اشتباه متوجه نشده باشم و به دردتون بخوره:


public class Main {

public static int[][] func(int[] sortedInputArray)
{
int numberOfArrays = 1;
for( int index = 1; index < sortedInputArray.length; index++ )
if( sortedInputArray[index] != sortedInputArray[index-1] )
numberOfArrays++;
int[][] outputArray = new int[numberOfArrays][];

int k = 0, i = 0, j = 1;
while( i < sortedInputArray.length )
{
while( j < sortedInputArray.length && sortedInputArray[j-1] == sortedInputArray[j] )
j++;

outputArray[k] = new int[j-i];
for( int index = 0; index < j - i; index++ )
outputArray[k][index] = sortedInputArray[index+i];

k++;
i = j;
j++;
}

return outputArray;
}

public static void main(String[] args) {
int num[] = {20,21,21,24,26,26,26,30};
int[][] outputArray = func(num);
for (int[] js : outputArray) {
for (int l : js)
System.out.print(l + " ");
System.out.println();
}
}
}