排序算法之选择排序

思路

首先,找到数组中最小的元素,拎出来,将它和数组的第一个元素交换位置,第二步,在剩下的元素中继续寻找最小的元素,拎出来,和数组的第二个元素交换位置,如此循环,直到整个数组排序完成。

至于选大还是选小,这个都无所谓,你也可以每次选择最大的拎出来排,也可以每次选择最小的拎出来的排,只要你的排序的手段是这种方式,都叫选择排序

我的理解:
类似双指针:外层指针,内层指针。
外层指针: 负责控制遍历。每次遍历时均认为该指针对应的值为最小值。
内层指针: 负责遍历外层指针所对应的元素之后的所有元素,找到最小的元素。找到最小元素之后,与外层指针所对应的元素进行交换。
内外层指针都是元素的下标

代码实现

python代码实现

def SelectionSort(listArr:list):
	num=len(listArr) 
	for i in range(num-1): #外层控制遍历
		min_index=i
		for j in range(i+1,num):
			if litArr[min_index]>listArr[j]:
				min_index=j
		#找到最小元素的下标后,开始交换素。
		listArr[i],listArr[min_index]=listArr[min_index],listArr[i]  
	return listArr

c#代码

namespace SelectionSort
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] Arr = new int[] { 8,2,5,9,7};
            SelectionSort(Arr);
            foreach (int item in Arr)
            {
                Console.WriteLine(item);
            }

            Console.ReadLine();
        }
        public static void SelectionSort(int[] Arr)
        {
            int min_index = 0;  //最小元素的小标
            for (int i = 0; i < Arr.Length-1; i++)  //外层控制循环
            {
                min_index = i;
                for (int j = i+1; j < Arr.Length; j++)
                {
                    if (Arr[min_index]>Arr[j])
                    {
                        min_index = j; //更新最小元素的下标
                    }
                }
                int temp = Arr[i];
                Arr[i] = Arr[min_index];
                Arr[min_index] = temp;
            }
        }
    }
}

以上代码测试正常。

如有不妥之处,敬请指正,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值