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

เรียงลำดับอาร์เรย์ของสตริงโดยใช้การเรียงลำดับการเลือกใน C ++


อัลกอริธึมการจัดเรียงการเลือกจะจัดเรียงการจัดแสดงโดยการค้นหาส่วนประกอบพื้นฐานจากส่วนที่ไม่ได้จัดเรียงมากกว่าหนึ่งครั้งและนำไปไว้ที่จุดเริ่มต้น ในแต่ละการเน้นของการจัดเรียงการกำหนด ส่วนประกอบฐานจากอาร์เรย์ย่อยที่ไม่เรียงลำดับจะถูกเลือกและย้ายไปยังอาร์เรย์ย่อยที่จัดเรียงไว้

ตัวอย่าง

#include <iostream>
#include <string.h>
using namespace std;
#define MAX_LEN 50
void selectionSort(char arr[][50], int n){
   int i, j, mIndex;
   // Move boundary of unsorted subarray one by one
   char minStr[50];
   for (i = 0; i < n-1; i++){
      // Determine minimum element in unsorted array
      int mIndex = i;
      strcpy(minStr, arr[i]);
      for (j = i + 1; j < n; j++){
         // check whether the min is greater than arr[j]
         if (strcmp(minStr, arr[j]) > 0){
            // Make arr[j] as minStr and update min_idx
            strcpy(minStr, arr[j]);
            mIndex = j;
         }
      }
      // Swap the minimum with the first element
      if (mIndex != i){
         char temp[50];
         strcpy(temp, arr[i]); //swap item[pos] and item[i]
         strcpy(arr[i], arr[mIndex]);
         strcpy(arr[mIndex], temp);
      }
   }
}
int main(){
   char arr[][50] = {"Tom", "Boyaka", "Matt" ,"Luke"};
   int n = sizeof(arr)/sizeof(arr[0]);
   int i;
   cout<<"Given String is:: Tom, Boyaka, Matt, Luke\n";
   selectionSort(arr, n);
   cout << "\nSelection Sorted is::\n";
   for (i = 0; i < n; i++)
      cout << i << ": " << arr[i] << endl;
   return 0;
}

โปรแกรม C ++ ด้านบนนี้เริ่มต้นเลือกส่วนประกอบที่เล็กที่สุดในนิทรรศการและสลับกับองค์ประกอบหลักในคลัสเตอร์ ถัดไป มันจะสลับส่วนประกอบที่เล็กที่สุดที่สองในคลัสเตอร์กับส่วนประกอบที่ตามมา ฯลฯ ในลักษณะนี้สำหรับแต่ละรอบ ส่วนประกอบที่เล็กที่สุดในการจัดแสดงจะถูกเลือกและวางไว้ในสถานการณ์ที่ถูกต้องจนกว่าจะจัดเรียงทั้งคลัสเตอร์ สุดท้าย วิธีการจัดเรียงส่วนจะเรียงลำดับสตริงที่กำหนดจากน้อยไปหามากดังนี้

ผลลัพธ์

Given string is:: Tom, Boyaka, Matt, Luke
Selection Sorted::
Boyaka
Luke
Matt
Tom