Search This Blog

Thursday, March 8, 2012

Selection Sort

Selection सोर्ट सर्चिंग और सोर्टिंग का मेल है 

हर पास में , बिना जमा हुआ नंबर जो सबसे छोटा या सबसे बड़ा हो , वो अपनी सही जगह पर जमा दिया जाता है ।selection सोर्ट को हमे अर्रे के कुल नम्बरों की संख्या से एक कम बार चलाना पड़ता है । इस सोर्ट में दो लूप होते है । अंदर वाला लूप तो अगली छोटी या बड़ी संख्या का पता लगता है और बाहर वाला लूप उसको उसकी सही जगह पर रख देता है ।



उदहारण के लिए निचे दिया हुआ अर्रे देखिये : 
64 25 12 22 11 <- हमारे पास शुरू में यह अर्रे है 

11 25 12 22 64 <-पहले पास में हमने 64 को अर्रे के हर एलिमेंट से compare किया और उसको उसकी सही जगह पर जमा दिया जो आखिर वाली या 

11 12 25 22 64 <- दुसरे पास में हमने पहले एलिमेंट को दुसरे से compare किया और पाया की यह ठीक जमे हुए है , उसके बाद हमने दुसरे एलिमेंट को ऊपर वाले  अर्रे में  (25) को 12 से compare किया और फिर उनको ठीक से जमा दिया 

11 12 22 25 64 <- अब हमे 22 को 25 से compare किया और उनकी position को ठीक क्या 

11 12 22 25 64 <- अंत में हमारे पास sorted अर्रे है , जो हमारा पहला लक्ष्य था ।

// SelectionSort.java - integer अर्रे को सोर्ट करने का तरीका 
class SelectionSort {
  public static void main(String[] args) {
    int[] a = {11,12,22,25,64};

    sort(a);
    for (int i = 0; i < a.length; i++){
      System.out.println(a[i]);
    }
  }
  // sort function जो अर्रे को क्रम अनुसार जमाएगा 
  static void sort(int[] data) {
    int   next, indexOfNext;

    for (next = 0; next < data.length - 1; next++) {
      indexOfNext = min(data,next,data.length - 1);
      swap(data, indexOfNext, next);
    }
  }
  // दी गए सभी इंडेक्स में से  
  // सबसे छोटे एलेमेन्ट की इंडेक्स का पता लगाना
  static int min(int[] data, int start, int end) {
    int indexOfMin = start; // initial guess

    for (int i = start+1; i <= end; i++)
      if (data[i] < data[indexOfMin])
        indexOfMin = i; // found a smaller value
    return indexOfMin;
  }
  // अर्रे की entries की अदला बदली करना 
  static void swap(int[] data, int first, int second){
    int temp;

    temp = data[first];
    data[first] = data[second];
    data[second] = temp;
  }
}











No comments:

Post a Comment