C#Selection使用字符串排序

时间:2015-12-19 21:02:04

标签: c# string list sorting selection-sort

好的,我一直在使用此代码对整数进行选择排序:

public void selectSort(int [] arr)
{
    //pos_min is short for position of min
    int pos_min,temp;

    for (int i=0; i < arr.Length-1; i++)
    {
        pos_min = i; //set pos_min to the current index of array

        for (int j=i+1; j < arr.Length; j++)
        {
            if (arr[j] < arr[pos_min])
            {
                //pos_min will keep track of the index that min is in, this is needed when a swap happens
                pos_min = j;
            }                                          
        }

        //if pos_min no longer equals i than a smaller value must have been found, so a swap must occur
        if (pos_min != i)
        {
            temp = arr[i];
            arr[i] = arr[pos_min];
            arr[pos_min] = temp;
        }
    }
}

但现在我想在字符串列表上运行相同的算法 怎么可能完成?感觉真的很尴尬,就像你需要额外的循环来比较不同字符串的多个字符..?
我尝试了很多,但我无法想出任何有用的东西。 :/

注意: 我知道,选择排序并不是非常有效。这仅用于学习目的。我不是在寻找已经属于C#的替代算法或类。 ;)

1 个答案:

答案 0 :(得分:0)

我正在用python 3.6编写代码

第一个导入sys模块,用于在我们的语法中使用各种功能。

import sys

考虑一个字符串数据类型项的数组。

A = ['Chuck', 'Ana', 'Charlie', 'Josh']

for i in range(0, len(A)):
    min_val = i
    for j in range(i+1, len(A)):
        if A[min_val] > A[j]:
            min_val = j

在此处交换索引和最小值。

    (A[min_val], A[i]) = (A[i], A[min_val])

print("Sorted Array is :")
for i in range(len(A)):
    print("%s" % A[i])

这对于字符串数据类型的数组非常有用,并且可以按字母顺序对输入数据进行排序。

正在对输入中的“查理”和“查克”按照字母顺序进行比较,直到第3位,并进行相应排列。

此程序在python控制台上的输出为

排序数组为: 安娜 查理 卡盘 乔什