الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تنبيه ] sorting in java

بدأه bedour في 28 مايو 2010 · 6 رد · 830 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

انا مسجلة جديدة في المنتدى واتمنى اجد الفائدة فيه

البداية عندي مشروع في الجافا عن الترتيب sort

1-insertion sort

2- quick sort

3- radix sort

أنا سويت اول برنامج تبع ال nsertion sort واستخدمت فيه random

حابة اجد شخص يحاول يساعدني اكتب نفس البرنامج بس بتحويل الكود من insertion الى باقي الانواع وشكرا

وهذا الكود

import java.util.Random;

public class InsertionSort

{

private int[] data;

private static Random generator=new Random();

/////////////////////////////////

public InsertionSort(int size)

{

data= new int ;

for(int i=0;i<size;i++)

data = 10 + generator.nextInt(90);

}

public void sort()

{

int insert;

for(int next=1;next<data.length;next++)

{

insert=data[next];

int moveItem=next;

while(moveItem>0&&data[moveItem-1]>insert)

{

data[moveItem]=data[moveItem-1];

moveItem--;

}

data[moveItem]=insert;

printPass(next,moveItem);

}

}

public void printPass(int pass,int index)

{

System.out.print(String.format("after pass%2d:",pass));

for(int i=0;i<index;i++)

System.out.print(data+" ");

System.out.print(data[index]+"* ");

for(int i=index +1;i<data.length;i++)

System.out.print(data+" ");

System.out.print("\n ");

for(int i =0;i<=pass;i++)

System.out.print(" -- ");

System.out.println("\n");

}

public String toString()

{

StringBuilder temporary=new StringBuilder();

for(int element :data)

temporary.append(element+" ");

temporary.append("\n ");

return temporary.toString();

}

}

bedour

اللهم إني ظلمت نفسي فغفر لي ...فإنه لا يغفر الذنوب إلا أنت

((لا اله إلا الله ..عدد ما كان .. وعدد ما يكون.. وعدد الحركات والسكون))

hearts018.gif
#2

*- يحظر استخدام اللهجة العامية

*- أو كتابة الأسئلة باللغة الإنجليزية

*- أو كتابة الكلمات الإنجليزية بالعربية

كما أحب أنبه على استخدام البحث قبل المشاركة

تحياتي

تم تعديل هذه المشاركة بواسطة علاء الصالحي في 28 مايو 2010 في 07:43

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#3

انااسفه اخوي انا جديدة

وكنت اتمنى تفهم علي في اشياء نأخذها كمصطلح باللغة الانجليزية كيف ما احاول اكتب الاثنين ؟

شكرا على مجهودك بقراءة المشاركة

bedour

اللهم إني ظلمت نفسي فغفر لي ...فإنه لا يغفر الذنوب إلا أنت

((لا اله إلا الله ..عدد ما كان .. وعدد ما يكون.. وعدد الحركات والسكون))

hearts018.gif
#5

أنا قصدت العنوان أختي :)

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#6

السلام عليكم

وشكرا استاذ علاء والان عرفت الخطاء

لو ممكن تساعدني

انا اخذت هذا الكود من النت بس يطلع لي رسالة الخطاء "cannot find symbol variable StdRandom"

اذا ممكن تشوفه لي ولك جزيل الشكر

/*************************************************************************
 *  Compilation:  javac Quick.java
 *  Execution:    java Quick N
 *  Dependencies: StdRandom.java
 *
 *  Generate N random real numbers between 0 and 1 and quicksort them.
 *
 *************************************************************************/
import java.lang.*;
import java.io.*;
import java.util.*;

public class Quick {

    // quicksort the array
    public static void sort(Comparable[] a) {
        StdRandom.shuffle(a);
        sort(a, 0, a.length - 1);
    }

    // quicksort the subarray from a[lo] to a[hi]
    private static void sort(Comparable[] a, int lo, int hi) {
        if (hi <= lo) return;
        int j = partition(a, lo, hi);
        sort(a, lo, j-1);
        sort(a, j+1, hi);
        assert isSorted(a, lo, hi);
    }

    // partition the subarray a[lo .. hi] by returning an index j
    // so that a[lo .. j-1] <= a[j] <= a[j+1 .. hi]
    private static int partition(Comparable[] a, int lo, int hi) {
        int i = lo;
        int j = hi + 1;
        Comparable v = a[lo];
        while (true) {

            // find item on lo to swap
            while (less(a[++i], v))
                if (i == hi) break;

            // find item on hi to swap
            while (less(v, a[--j]))
                if (j == lo) break;      // redundant since a[lo] acts as sentinel

            // check if pointers cross
            if (i >= j) break;

            exch(a, i, j);
        }

        // put v = a[j] into position
        exch(a, lo, j);

        // with a[lo .. j-1] <= a[j] <= a[j+1 .. hi]
        return j;
    }

   /***********************************************************************
    *  Rearranges the elements in a so that a[k] is the kth smallest element,
    *  and a[0] through a[k-1] are less than or equal to a[k], and
    *  a[k+1] through a[n-1] are greater than or equal to a[k].
    ***********************************************************************/
    public static Comparable select(Comparable[] a, int k) {
        if (k < 0 || k >= a.length) {
            throw new RuntimeException("Selected element out of bounds");
        }
        StdRandom.shuffle(a);
        int lo = 0, hi = a.length - 1;
        while (hi > lo) {
            int i = partition(a, lo, hi);
            if      (i > k) hi = i - 1;
            else if (i < k) lo = i + 1;
            else return a;
        }
        return a[lo];
    }



   /***********************************************************************
    *  Helper sorting functions
    ***********************************************************************/

    // is v < w ?
    private static boolean less(Comparable v, Comparable w) {
        return (v.compareTo(w) < 0);
    }

    // exchange a and a[j]
    private static void exch(Object[] a, int i, int j) {
        Object swap = a;
        a = a[j];
        a[j] = swap;
    }


   /***********************************************************************
    *  Check if array is sorted - useful for debugging
    ***********************************************************************/
    private static boolean isSorted(Comparable[] a) {
        return isSorted(a, 0, a.length - 1);
    }

    private static boolean isSorted(Comparable[] a, int lo, int hi) {
        for (int i = lo + 1; i <= hi; i++)
            if (less(a, a[i-1])) return false;
        return true;
    }



    // test client
    public static void main(String[] args) {

        // generate array of N random reals between 0 and 1
        int N = Integer.parseInt(args[0]);
        Double[] a = new Double[N];
        for (int i = 0; i < N; i++) {
            a = Math.random();
        }

        // sort the array
        Quick.sort(a);

        // display results
        for (int i = 0; i < N; i++) {
            System.out.println(a);
        }
        System.out.println();
        System.out.println("isSorted = " + isSorted(a));
        System.out.println();

        // display results using select
        for (int i = 0; i < N; i++) {
            Double ith = (Double) Quick.select(a, i);
            System.out.println(ith);
        }
        System.out.println();
    }
}

تم تعديل هذه المشاركة بواسطة علاء الصالحي في 30 مايو 2010 في 21:59 — السبب: إضافة وسم code

bedour

اللهم إني ظلمت نفسي فغفر لي ...فإنه لا يغفر الذنوب إلا أنت

((لا اله إلا الله ..عدد ما كان .. وعدد ما يكون.. وعدد الحركات والسكون))

hearts018.gif
#7

أختي يوجد فئة اسمها StdRandom تستخدمها هذه الشيفرة

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة