खोज…


टिप्पणियों

कंप्यूटर विज्ञान में, एक चयन प्रकार एक छँटाई एल्गोरिथ्म है, विशेष रूप से एक इन-प्लेस तुलना प्रकार। इसमें O (n 2 ) समय की जटिलता है, जो इसे बड़ी सूचियों पर अक्षम बनाता है, और आमतौर पर समान सम्मिलन के प्रकार से भी बदतर प्रदर्शन करता है। चयन प्रकार इसकी सादगी के लिए जाना जाता है, और इसमें कुछ स्थितियों में अधिक जटिल एल्गोरिदम पर प्रदर्शन लाभ हैं, विशेष रूप से जहां सहायक मेमोरी सीमित है।

नीचे दी गई छवि दिखाती है कि चयन प्रकार कैसे काम करता है-

यहाँ छवि विवरण दर्ज करें

छद्म कोड के नीचे एक कार्यक्रम (किसी भी भाषा में) बनाने या चयन प्रकार को समझने में मदद करता है।

procedure selection sort 
list  : array of items
n     : size of list

for i = 1 to n - 1
/* set current element as minimum*/
  min = i    

  /* check the element to be minimum */

  for j = i+1 to n 
     if list[j] < list[min] then
        min = j;
     end if
  end for

  /* swap the minimum element with the current element*/
  if indexMin != i  then
     swap list[min] and list[i]
  end if

end for

end procedure

लाभ:

  • यह समझना बहुत आसान है
  • यह एक छोटी सूची पर अच्छा प्रदर्शन करता है
  • मूल सूची को रखने के लिए जो आवश्यक है उससे परे कोई अतिरिक्त अस्थायी भंडारण की आवश्यकता नहीं है

छवि संदर्भ: RMIT विश्वविद्यालय

चयन सॉर्ट (पायथन)

चयन प्रकार कैसे काम करता है यह दिखाने के लिए एनीमेशन

यहाँ छवि विवरण दर्ज करें

नीचे का उदाहरण पायथन में चयन प्रकार को दर्शाता है

def sort_selection(my_list):

for pos_upper in xrange( len(my_list)-1, 0, -1):
    max_pos = 0
    for i in xrange(1, pos_upper + 1):
        if(my_list[i] > my_list[max_pos]):
            max_pos = i
            print "resetting max_pos = " + str(max_pos)

    my_list[pos_upper], my_list[max_pos] = my_list[max_pos], my_list[pos_upper]
    print "pos_upper: " + str(pos_upper) + " max_pos: " + str(max_pos) + " my_list: " + str(my_list)

return my_list


if __name__ == "__main__":

    my_list = [54,26,93,17,77,31,44,55,20]
    print "my_list: " + str(my_list)
    print sort_selection(my_list)

कार्यक्रम का आउटपुट:

my_list: [54, 26, 93, 17, 77, 31, 44, 55, 20]
resetting max_pos = 2
pos_upper: 8 max_pos: 2 my_list: [54, 26, 20, 17, 77, 31, 44, 55, 93]
resetting max_pos = 4
pos_upper: 7 max_pos: 4 my_list: [54, 26, 20, 17, 55, 31, 44, 77, 93]
resetting max_pos = 4
pos_upper: 6 max_pos: 4 my_list: [54, 26, 20, 17, 44, 31, 55, 77, 93]
pos_upper: 5 max_pos: 0 my_list: [31, 26, 20, 17, 44, 54, 55, 77, 93]
resetting max_pos = 4
pos_upper: 4 max_pos: 4 my_list: [31, 26, 20, 17, 44, 54, 55, 77, 93]
pos_upper: 3 max_pos: 0 my_list: [17, 26, 20, 31, 44, 54, 55, 77, 93]
resetting max_pos = 1
pos_upper: 2 max_pos: 1 my_list: [17, 20, 26, 31, 44, 54, 55, 77, 93]
resetting max_pos = 1
pos_upper: 1 max_pos: 1 my_list: [17, 20, 26, 31, 44, 54, 55, 77, 93]
[17, 20, 26, 31, 44, 54, 55, 77, 93]

छवि संदर्भ: समुद्री डाकू शिक्षार्थी

चयन सॉर्ट (जावा)

चयन प्रकार कैसे काम करता है यह दिखाने के लिए एनीमेशन

यहाँ छवि विवरण दर्ज करें

नीचे उदाहरण आरोही क्रम में चयन प्रकार दिखाता है:

public class MySelectionSort {
 
    public static int[] doSelectionSort(int[] arr){
         
        for (int i = 0; i < arr.length - 1; i++)
        {
            int index = i;
            for (int j = i + 1; j < arr.length; j++)
                if (arr[j] < arr[index]) 
                    index = j;
      
            int smallerNumber = arr[index];  
            arr[index] = arr[i];
            arr[i] = smallerNumber;
        }
        return arr;
    }

मैंने चयन प्रकार के आउटपुट को दिखाने के लिए एक नमूना main() विधि लिखी है:

    public static void main(String a[]){
         
        int[] arr1 = {10,34,2,56,7,67,88,42};
        int[] arr2 = doSelectionSort(arr1);
        for(int i:arr2){
            System.out.print(i);
            System.out.print(", ");
        }
    }
}

कार्यक्रम का आउटपुट:

2, 7, 10, 34, 42, 56, 67, 88

उदाहरण नीचे अवरोही क्रम में चयन प्रकार दिखाता है:

public static void doDescendingSelectionSort ( int [ ] num )
{
     int i, j, first, temp;  
     for ( i = num.length - 1; i > 0; i - - )  
     {
          first = 0;   //initialize to subscript of first element
          for(j = 1; j <= i; j ++)   //locate smallest element between positions 1 and i.
          {
               if( num[ j ] < num[ first ] )         
                 first = j;
          }
          temp = num[ first ];   //swap smallest found with element in position i.
          num[ first ] = num[ i ];
          num[ i ] = temp; 
      }           
}

चित्र संदर्भ: विकिपीडिया



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow