数据结构和算法之简单选择排序

 /// <summary>
        /// 简单选择排序
        /// 给定数组:int[] arr={里面n个数据};
        /// 第1趟排序,在待排序数据arr[1]~arr[n]中选出最小的数据,将它与arrr[1]交换;
        /// 第2趟,在待排序数据arr[2]~arr[n]中选出最小的数据,将它与r[2]交换;
        /// 以此类推,第i趟在待排序数据arr[i]~arr[n]中选出最小的数据,将它与r[i]交换,直到全部排序完成。
        /// </summary>
        /// <param name="arry"></param>
        public static void EasySelectSort(int[] arry)
        {
            for (int i = 0; i < arry.Length-1; i++)
            {
                int k = i;//标记最小的数字的索引

                for ( int j = k+1; j < arry.Length-1; j++)
                {
                    if(arry[j]<arry[k])//找到最小的数据
                    {
                        k = j;
                    }
                }
                //内层循环结束找到最小的数字
                if(k!=i)
                {
                    Swap(arry, k, i);
                }
            }
        }

时间复杂度:n^2

原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/10544776.html

时间: 2024-11-08 17:59:58

数据结构和算法之简单选择排序的相关文章

【算法】简单选择排序C语言实现

上一篇我们谈到了冒泡排序,实现了两个版本的冒泡排序,不知道大家有没有对冒泡排序的特点进行一下总结呢?其实冒泡排序还算是比较暴力的,因为它频繁不断的进行交换,那么这样的话,我们的计算机的计算频率就会很高,不算是很高效,那么我们可不可以找到一种交换次数少一点的方法呢?这就引出了我们接下来要介绍的简单选择排序算法了. 简单选择排序的基本思想就是通过N-1次的关键字间的比较,从N - i + 1个记录中选择一个关键字最小记录,并和第i(1<= i <= n)个记录交换,其实简单选择排序和冒泡排序在思路

冒泡排序算法和简单选择排序算法的js实现

之前已经介绍过冒泡排序算法和简单选择排序算法和原理,现在有Js实现. 冒泡排序算法 let dat=[5, 8, 10, 3, 2, 18, 17, 9]; function bubbleSort(data) { for(let i=0;i<data.length-1;i++){ for(let j=0;j<data.length-1-i;j++){ if(data[j]>data[j+1]){ [data[j],data[j+1]]=[data[j+1],data[j]]; } } }

算法之简单选择排序和堆排序

3. 选择排序-简单选择排序(Simple Selection Sort) 基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止. 简单选择排序的示例: 操作方法: 第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换: 第二趟,从第二个记录开始的n-1 个记录中再选出关键码最小的记录与第二个记录交换: 以此类推.....

算法_简单选择排序

每一轮选一个最小的和最靠前的位置交换. 栗子 : 3 7 1 5 第一轮:1 7 3 5 第二轮:1 3 7 5 第三轮:1 3 5 7 for(int i = 0;i<n;i++){//这里应该可以是i<n-1,最后一轮只剩一个无所谓 k = i; for (int j = i + 1; j < n; j++) { if (a[k] > a[j]) { k = j; } } if (k != i) { temp = a[i]; a[i] = a[k]; a[k] = temp;

排序算法之简单选择排序

基本思想 在一组元素中选择具有最小排序码的元素,若它不是这组元素中的第一个元素,则将它与这组元素中的第一个元素对调:在未排序的剩下的元素中反复运行以上步骤,直到剩余元素仅仅有一个为止. 代码 private void selectSort(int[] a, int left, int right) { for (int i = left; i < right; i++) { int k = i; int temp; for (int j = i + 1; j <= right; j++) {

【算法】 简单选择排序

/// <summary> /// 简单选择排序 /// 思路 (与冒泡排序类似): /// 遍历源集合,每次选出最大或最小元素,放在未排序子集末尾或首位 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="list"></param> /// <param name="func"&g

【数据结构与算法 02】选择排序

算法思想: 遍历数组array[N],索引为 i,然后算出[i+1,N-1]区间中的最小数,与array[i]交换,最后一个数因为只有一个,所以不用比较外循环为 N-2次 博客地址:http://blog.csdn.net/mkrcpp/article/details/39181077 import java.util.Arrays; /*** * @title 选择排序 * @author michael.mao * @date 2014年9月10日 下午2:32:01 * @version

算法 之 简单选择排序法

简单排序算法:每一趟选择最小的与该趟第一个数交换,而不动其他数. 例如  3,8,2,5,7第1趟:2与3交换  2,8,3,5,7 第2趟:3与8交换  2,3,8,5,7 第3趟:5与8交换  2,3,5,8,7 第4趟:7与8交换  2,3,5,7,8 关键点在于:保持其他数不动,只把索引为0的数(第一个数)与最小的数作交换. 时间复杂度 O(n^2) $a = array(3,8,2,5,7,1,6,4); $index = 0; for($j = 0 ; $j < count($a)-

经典排序算法--简单选择排序

算法简介 简单选择排序是一种选择排序. 选择排序:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止. 白话理解 依然已排队为例,在排队时,有的老师可能会选择这样排序,先在一列中选出最矮的,放在第一位,然后选出第二矮的,放在第二位.队伍完成排序.而这就是选择排序的思想. 简单排序处理流程 (1)从待排序序列中,找到关键字最小的元素: (2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换: (3)从余下的 N - 1 个元素中,找出关键字最小