算法之选择排序

选择排序的实质是:

第一步:对于给定的一任意数组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#

        /// 
        /// 查找最小值的索引
        /// 
        /// 
        /// 
        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;
        }
        /// 
        /// 选择排序(从小到大)
        /// 
        /// 
        /// 
        public static int[] SelectSortMethod(int[] arry)
        {
            List Arrylist = arry.ToList();
            List ResultArry = new List();
            while (Arrylist.Count > 0)
            {
                //找出数组中值最小的索引
                var min_index = FindSmallest(Arrylist.ToArray());
                ResultArry.Add(Arrylist[min_index]);
                Arrylist.RemoveAt(min_index);
            }
            return ResultArry.ToArray();
        }

你可能感兴趣的:(算法之选择排序)