选择排序的实质是:
第一步:对于给定的一任意数组Arry,筛选其中值最小的元素a1(再此从小到大排序)
第二步:从数组Arry中删除元素a1,同时把a1添加新数组NewArry中
第三步:接着从数组Arry中筛选值最小的元素a2
第四步:从数组Arry中删除元素a2,同时把a1添加新数组NewArry中
重复第一步与第二步的操作,直到Arry中的元素全部删除,这时原先Arry中的元素都移动到NewArry中,并在NewArry中实现了排序
性能:
时间复杂度 | 空间复杂度 |
---|---|
O (ln^2 ) |
相关语言实现:
Python
def findSmallest(arr):
'''查找最小值元素的索引'''
smallest = arr[0]
smallest_index = 0
a=range(1,len(arr) )
for i in a:
if arr[i] < smallest:
smallest = arr[i]
smallest_index = i
return smallest_index
def selectSortMethod(arry):
'''选择排序'''
newArry=[]
for x in range(len(arry)):
smallest = findSmallest(arry)
newArry.append(arry.pop(smallest))
return newArry
C#
/// <summary>
/// 查找最小值的索引
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public static int FindSmallest(int[] list)
{
var min_num = list[0];
int min_index = 0;
for (int i = 1; i < list.Length; i++)
{
if (list[i] < min_num)
{
min_num = list[i];
min_index = i;
}
}
return min_index;
}
/// <summary>
/// 选择排序(从小到大)
/// </summary>
/// <param name="arry"></param>
/// <returns></returns>
public static int[] SelectSortMethod(int[] arry)
{
List<int> Arrylist = arry.ToList();
List<int> ResultArry = new List<int>();
while (Arrylist.Count > 0)
{
//找出数组中值最小的索引
var min_index = FindSmallest(Arrylist.ToArray());
ResultArry.Add(Arrylist[min_index]);
Arrylist.RemoveAt(min_index);
}
return ResultArry.ToArray();
}
网友评论