Computer >> Máy Tính >  >> Lập trình >> C ++

Sắp xếp một mảng của chuỗi bằng cách sử dụng sắp xếp Lựa chọn trong C ++


Thuật toán Sắp xếp Lựa chọn sắp xếp một triển lãm bằng cách nhiều lần tìm thành phần cơ sở từ phần chưa được sắp xếp và đưa nó vào đầu. Trong mỗi lần nhấn mạnh của sắp xếp xác định, thành phần cơ sở từ mảng con chưa được sắp xếp được chọn và chuyển đến mảng con đã sắp xếp.

Ví dụ

#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;
}

Chương trình C ++ ở trên này ban đầu chọn thành phần nhỏ nhất trong triển lãm và hoán đổi nó với thành phần chính trong cụm. Tiếp theo, nó hoán đổi thành phần nhỏ nhất thứ hai trong cụm với thành phần tiếp theo, v.v. Theo cách này đối với mỗi lần vượt qua, thành phần nhỏ nhất trong triển lãm được chọn và đặt trong tình huống hợp pháp của nó cho đến khi toàn bộ cụm được sắp xếp. Cuối cùng, phương pháp sắp xếp phần sắp xếp chuỗi đã cho theo thứ tự tăng dần như sau;

Đầu ra

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