好的,我一直在使用此代码对整数进行选择排序:
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#的替代算法或类。 ;)
答案 0 :(得分:0)
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])
排序数组为: 安娜 查理 卡盘 乔什