Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C ++ สำหรับ Gnome Sort?


ที่นี่เราจะดูว่าการเรียงลำดับของ gnome ทำงานอย่างไร นี่เป็นอัลกอริธึมการเรียงลำดับอื่น ในแนวทางนี้ หากเรียงลำดับรายการแล้ว จะต้องใช้เวลา O(n) ดังนั้นความซับซ้อนของเวลากรณีที่ดีที่สุดคือ O(n) แต่ความซับซ้อนของกรณีเฉลี่ยและกรณีที่เลวร้ายที่สุดคือ O(n^2) ตอนนี้ให้เราดูอัลกอริทึมเพื่อรับแนวคิดเกี่ยวกับเทคนิคการจัดเรียงนี้

อัลกอริทึม

gnomeSort(arr, n)

begin
   index := 0
   while index < n, do
      if index is 0, then
         index := index + 1
      end if
      if arr[index] >= arr[index -1], then
         index := index + 1
      else
         exchange arr[index] and arr[index - 1]
         index := index - 1
      end if
   done
end

ตัวอย่าง

#include<iostream>
using namespace std;
void gnomeSort(int arr[], int n){
   int index = 0;
   while(index < n){
      if(index == 0) index++;
      if(arr[index] >= arr[index - 1]){ //if the element is greater than previous one
         index++;
      } else {
         swap(arr[index], arr[index - 1]);
         index--;
      }
   }
}
main() {
   int data[] = {54, 74, 98, 154, 98, 32, 20, 13, 35, 40};
   int n = sizeof(data)/sizeof(data[0]);
   cout << "Sorted Sequence ";
   gnomeSort(data, n);
   for(int i = 0; i <n;i++){
      cout << data[i] << " ";
   }
}

ผลลัพธ์

Sorted Sequence 13 20 32 35 40 54 74 98 98 154