نمایش نتایج 1 تا 4 از 4

نام تاپیک: ایجاد حجم مشخص دیتا در بازه مشخص

  1. #1

    ایجاد حجم مشخص دیتا در بازه مشخص

    سلام دوستان
    من واسه یه پروژه ای باید یه گیگ دیتا تو بازه 1 تا 1000 بسازم و تو یه فایل متنی بزارم و بعدش اونو با یه الگوریتم خاص مرتب کنم...
    1:چطوری 1 گیگ دیتا بسازم؟مثلا من واسه ساخت اعداد تابع رندوم بزنم،از کجا بفهمم کی میشه 1 گیگ؟
    2:تو اری لیست بزنم؟
    3:اگه با اری لیست زدم چطور مقادیر تو اری لیست رو با اون الگوریتم مورد نظرم مرتب کنم؟

    خیلی خیلی ممنون میشم جواب بدین
    اینم جهت اطمینان:roshanikabir@gmail.com

  2. #2

    نقل قول: ایجاد حجم مشخص دیتا در بازه مشخص

    نقل قول نوشته شده توسط Roshanikabir مشاهده تاپیک
    سلام دوستان
    من واسه یه پروژه ای باید یه گیگ دیتا تو بازه 1 تا 1000 بسازم و تو یه فایل متنی بزارم و بعدش اونو با یه الگوریتم خاص مرتب کنم...
    1:چطوری 1 گیگ دیتا بسازم؟مثلا من واسه ساخت اعداد تابع رندوم بزنم،از کجا بفهمم کی میشه 1 گیگ؟
    2:تو اری لیست بزنم؟
    3:اگه با اری لیست زدم چطور مقادیر تو اری لیست رو با اون الگوریتم مورد نظرم مرتب کنم؟

    خیلی خیلی ممنون میشم جواب بدین
    اینم جهت اطمینان:roshanikabir@gmail.com

    قسمت اول حل شد.2 و 3 مونده هنوز...

  3. #3

    نقل قول: ایجاد حجم مشخص دیتا در بازه مشخص

    نوع ذخیره سازی اعدادتون می خواید چه شکلی باشه؟ مثلا به صورت text ذخیره باشه یا به صورت binary ؟
    اگه به صورت binary باشه، ذخیره سازی و خوندش هم راحت تره.

    پیشنهاد من برای ساختن یه فایل یک گیگی این کده:



    public class Main
    {
    public static void main(String[] args) throws IOException
    {
    final int FILE_SIZE = (1024 * 1024 * 1024 * 1);
    final String FILE_NAME = "temp";

    Random random = new Random();

    DataOutputStream stream = new DataOutputStream(new FileOutputStream(FILE_NAME));

    for (int i = 0; i < FILE_SIZE / 4; i += 1)
    {
    stream.writeInt(random.nextInt());
    }
    stream.close();
    }
    }




    و برای sort کردن هم از این کد استفاده کنید:




    public class Main
    {
    public static void main(String[] args) throws IOException
    {
    final int FILE_SIZE = (1024 * 1024 * 1024 * 1);
    final String FILE_NAME = "temp";

    DataInputStream inStream = new DataInputStream(new FileInputStream(FILE_NAME));

    int[] array = new int[FILE_SIZE / 4];
    for (int i = 0; i < FILE_SIZE / 4; i += 1)
    {
    array[i] = inStream.readInt(1000);
    }

    Arrays.sort(array);
    inStream.close();

    DataOutputStream outStream = new DataOutputStream(new FileOutputStream(FILE_NAME + ".sorted"));

    for (int i = 0; i < FILE_SIZE / 4; i += 1)
    {
    outStream.writeInt(array[i]);
    }

    outStream.close();
    }
    }




    یکم جمع و جور تر با استفاده از تابع:


    package respiler;


    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.Random;


    public class Main
    {
    public static void writeIntArray(String name, int[] array) throws IOException
    {
    DataOutputStream outStream = new DataOutputStream(new FileOutputStream(name));

    for (int i = 0; i < array.length; i += 1)
    {
    outStream.writeInt(array[i]);
    }

    outStream.close();
    }

    public static void readIntArray(String name, int[] array) throws IOException
    {
    DataInputStream inStream = new DataInputStream(new FileInputStream(name));

    for (int i = 0; i < array.length; i += 1)
    {
    array[i] = inStream.readInt();
    }

    inStream.close();
    }

    public static int[] randomArray(int size, int max)
    {
    int[] result = new int[size];
    Random random = new Random();

    for (int i = 0; i < result.length; i += 1)
    {
    result[i] = random.nextInt(max);
    }

    return result;
    }

    public static final int data_size = (1024 * 1024 * 1024 * 1); // 1GB
    public static final String file_name = "temp";

    public static void main(String[] args) throws IOException
    {
    boolean generateFile = true;

    if (generateFile)
    {
    int[] array = randomArray(data_size / 4, 1000);
    writeIntArray(file_name, array);
    }
    else
    {
    int[] array = new int[data_size / 4];
    readIntArray(file_name, array);
    Arrays.sort(array);
    writeIntArray(file_name + ".sorted", array);
    }
    }
    }



  4. #4

    نقل قول: ایجاد حجم مشخص دیتا در بازه مشخص

    خیلی ممنون بابت جوابتون

تاپیک های مشابه

  1. پاسخ: 2
    آخرین پست: یک شنبه 23 تیر 1392, 18:31 عصر
  2. پاسخ: 4
    آخرین پست: سه شنبه 17 آبان 1390, 19:27 عصر
  3. تبدیل نوع دیتا تایپ (تبدیل دیتا تایپ های سیستمی وی بی به دیتا تایپ های بانک اطلاعاتی)
    نوشته شده توسط arman_Delta2002 در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 1
    آخرین پست: جمعه 28 مرداد 1390, 21:40 عصر
  4. پاسخ: 2
    آخرین پست: چهارشنبه 17 آذر 1389, 20:08 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •