c#选择排序

选择排序

     原数据{1,3,0,2} 
     第一轮从第1个元素开始找最小值,找到0最小,和1位置对调: 对调后  0 3 1 2
     排序后的数据{0,3,1,2} 第二轮排序 从第2个元素开始找最小值,找到1最小,和3位置对调,对调后 0 1 3 2
     排序后的数据{0,1,3,2} 第三轮排序 从第3个元素开始找最小值,找到22最小,和3位置对调,对调后 0 1 2 3
     至此排序完成
     --根据规律发现,需要3轮排序,才能完成最终的排序   次数是元素的长度-1次
public static void selectionSort(int[] arr)
        {
            int minId = 0;//定义一个变量存储最小值的索引
            //外层循环控制需要排序的次数为 arr.length-1
            for (int i = 0; i < arr.Length - 1; i++)
            {
                int min = i;
                //从数组中找到最小值。第1轮从0号位置开始,第二轮从1号位置开始
                for (int j = i; j < arr.Length; j++)
                {
                    //如果找到最小值记录最小值的索引
                    if (arr[j] < arr[min])
                    {
                        minId = j;
                    }
                }
                //最小值和当前需要插入的位置对调
                int temp = arr[i];
                arr[i] = arr[minId];
                arr[minId] = temp;
            }
        }

你可能感兴趣的:(排序算法,算法,数据结构)