给定一个字符串数组,请使用选择排序对数组进行排序。
例子:
Input : paper true soap floppy flower
Output : floppy, flower, paper, soap, true
先决条件:选择排序。
C++
// C++ program to implement selection sort for
// array of strings.
#include
#include
using namespace std;
#define MAX_LEN 100
// Sorts an array of strings where length of every
// string should be smaller than MAX_LEN
void selectionSort(char arr[][MAX_LEN], int n)
{
int i, j, min_idx;
// One by one move boundary of unsorted subarray
char minStr[MAX_LEN];
for (i = 0; i < n-1; i++)
{
// Find the minimum element in unsorted array
int min_idx = i;
strcpy(minStr, arr[i]);
for (j = i + 1; j < n; j++)
{
// If 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]);
min_idx = j;
}
}
// Swap the found minimum element with the first element
if (min_idx != i)
{
char temp[MAX_LEN];
strcpy(temp, arr[i]); //swap item[pos] and item[i]
strcpy(arr[i], arr[min_idx]);
strcpy(arr[min_idx], temp);
}
}
}
// Driver code
int main()
{
char arr[][MAX_LEN] = {"GeeksforGeeks", "Practice.GeeksforGeeks",
"GeeksQuiz"};
int n = sizeof(arr)/sizeof(arr[0]);
int i;
cout<<"Given array is\n";
for (i = 0; i < n; i++)
cout << i << ": " << arr[i] << endl;
selectionSort(arr, n);
cout << "\nSorted array is\n";
for (i = 0; i < n; i++)
cout << i << ": " << arr[i] << endl;
return 0;
}
// This is code is contributed by rathbhupendra
C
// C program to implement selection sort for
// array of strings.
#include
#include
#define MAX_LEN 100
// Sorts an array of strings where length of every
// string should be smaller than MAX_LEN
void selectionSort(char arr[][MAX_LEN], int n)
{
int i, j, min_idx;
// One by one move boundary of unsorted subarray
char minStr[MAX_LEN];
for (i = 0; i < n-1; i++)
{
// Find the minimum element in unsorted array
int min_idx = i;
strcpy(minStr, arr[i]);
for (j = i+1; j < n; j++)
{
// If 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]);
min_idx = j;
}
}
// Swap the found minimum element with the first element
if (min_idx != i)
{
char temp[MAX_LEN];
strcpy(temp, arr[i]); //swap item[pos] and item[i]
strcpy(arr[i], arr[min_idx]);
strcpy(arr[min_idx], temp);
}
}
}
// Driver code
int main()
{
char arr[][MAX_LEN] = {"GeeksforGeeks", "Practice.GeeksforGeeks",
"GeeksQuiz"};
int n = sizeof(arr)/sizeof(arr[0]);
int i;
printf("Given array is\n");
for (i = 0; i < n; i++)
printf("%d: %s \n", i, arr[i]);
selectionSort(arr, n);
printf("\nSorted array is\n");
for (i = 0; i < n; i++)
printf("%d: %s \n", i, arr[i]);
return 0;
}
Java
// Java program to implement selection sort
// on array of strings
import java.util.*;
import java.io.*;
class Main
{
// Sorts an array of strings
static void selectionSort(String arr[],int n)
{
// One by one move boundary of unsorted subarray
for(int i = 0; i < n - 1; i++)
{
// Find the minimum element in unsorted array
int min_index = i;
String minStr = arr[i];
for(int j = i + 1; j < n; j++)
{
/*compareTo() will return a -ve value,
if string1 (arr[j]) is smaller than string2 (minStr)*/
// If arr[j] is smaller than minStr
if(arr[j].compareTo(minStr) < 0)
{
// Make arr[j] as minStr and update min_idx
minStr = arr[j];
min_index = j;
}
}
// Swapping the minimum element
// found with the first element.
if(min_index != i)
{
String temp = arr[min_index];
arr[min_index] = arr[i];
arr[i] = temp;
}
}
}
// Driver code
public static void main(String args[])
{
String arr[] = {"GeeksforGeeks",
"Practice.GeeksforGeeks",
"GeeksQuiz"};
int n = arr.length;
System.out.println("Given array is");
// Printing the array before sorting
for(int i = 0; i < n; i++)
{
System.out.println(i+": "+arr[i]);
}
System.out.println();
selectionSort(arr, n);
System.out.println("Sorted array is");
// Printing the array after sorting
for(int i = 0; i < n; i++)
{
System.out.println(i+": "+arr[i]);
}
}
}
/*This code is contributed by rajesh999*/
Python3
# Python program to implement Selection Sort for
# array of strings
# Function defined for sorting the array of strings
def Selection(arr,n):
# One by one move boundary of unsorted subarray
for i in range(n):
min_index = i
min_str = arr[i]
# Find the minimum element in unsorted subarray
for j in range(i+1,n):
# If min_str is greater than arr[j]
if min_str>arr[j]:
# Make arr[j] as min_str and update min_index as j
min_str = arr[j]
min_index = j
# Swap the found minimum element with the first element
if min_index != i:
# Store the first element in temp
temp = arr[i]
# Place the min element at the first position
arr[i] = arr[min_index]
# place the element in temp at min_index
arr[min_index] = temp
# Return the sorted array
return arr
arr = ["GeeksforGeeks", "Practice.GeeksforGeeks", "GeeksQuiz"]
print("Given array is")
for i in range(len(arr)):
print(i,":",arr[i])
print("\nSorted array is")
for i in range(len(Selection(arr,len(arr)))):
print(i,":",Selection(arr,len(arr))[i])
# This code is contributed by Manish KC
# profile: mkumarchaudhary06
C#
// C# program to implement selection sort
// on array of strings
using System;
class GFG{
// Sorts an array of strings
static void selectionSort(string[] arr, int n)
{
// One by one move boundary of
// unsorted subarray
for(int i = 0; i < n - 1; i++)
{
// Find the minimum element in
// unsorted array
int min_index = i;
string minStr = arr[i];
for(int j = i + 1; j < n; j++)
{
/*compareTo() will return a -ve value,
if string1 (arr[j]) is smaller than
string2 (minStr)*/
// If arr[j] is smaller than minStr
if (arr[j].CompareTo(minStr) != 0)
{
// Make arr[j] as minStr and
// update min_idx
minStr = arr[j];
min_index = j;
}
}
// Swapping the minimum element
// found with the first element.
if (min_index != i)
{
string temp = arr[min_index];
arr[min_index] = arr[i];
arr[i] = temp;
}
}
}
// Driver Code
static void Main()
{
string[] arr = { "GeeksforGeeks",
"Practice.GeeksforGeeks",
"GeeksQuiz" };
int n = arr.Length;
Console.WriteLine("Given array is");
// Printing the array before sorting
for(int i = 0; i < n; i++)
{
Console.WriteLine(i + ": " + arr[i]);
}
Console.WriteLine();
selectionSort(arr, n);
Console.WriteLine("Sorted array is");
// Printing the array after sorting
for(int i = 0; i < n; i++)
{
Console.WriteLine(i + ": " + arr[i]);
}
}
}
// This code is contributed by divyesh072019
输出 :
Given array is
0: GeeksforGeeks
1: Practice.GeeksforGeeks
2: GeeksQuiz
Sorted array is
0: GeeksQuiz
1: GeeksforGeeks
2: Practice.GeeksforGeek