选择排序算法通过多次从未排序的部分中找到基本组件并对展览品进行排序来对展览品进行排序。在确定排序的每个重点中,都会从未排序的子数组中选取基本组件,并将其移至已安排的子数组中。
#include <iostream> #include <string.h> using namespace std; #define MAX_LEN 50 void selectionSort(char arr[][50], int n){ int i, j, mIndex; //逐一移动未排序子数组的边界 char minStr[50]; for (i = 0; i < n-1; i++){ //确定未排序数组中的最小元素 int mIndex = i; strcpy(minStr, arr[i]); for (j = i + 1; j < n; j++){ //检查最小值是否大于arr [j] if (strcmp(minStr, arr[j]) > 0){ //将arr [j]设为minStr并更新min_idx- strcpy(minStr, arr[j]); mIndex = j; } } //用第一个元素交换最小值 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 ++程序最初会选择展览中最小的组件,并将其与集群中的主要组件交换。接下来,它将群集中的第二个最小组件交换为后续组件,依此类推。以这种方式,每次通过时,选择展览中最小的组件并将其置于合法状态,直到整个群集都被布置为止。最后,section sort方法按如下升序对给定的字符串进行排序:
输出结果
Given string is:: Tom, Boyaka, Matt, Luke Selection Sorted:: Boyaka Luke Matt Tom