选择排序与冒泡排序

原创 2015年11月20日 18:21:49
/// <summary>
        /// 选择排序
        /// </summary>
        /// <param name="arr"></param>
        static void Sort1(int[] arr)
        {
            int len = arr.Length;
            for (var i = 0; i < arr.Length; i++)
            {
                int min = i;
                for (var n = i + 1; n < arr.Length; n++)
                {
                    if (arr[n] < arr[min])
                    {
                        min = n;
                    }
                }
                var temp = arr[i];
                arr[i] = arr[min];
                arr[min] = temp;
            }
        }
        /// <summary>
        /// 冒泡排序
        /// </summary>
        /// <param name="arr"></param>
        static void Sort2(int[] arr)
        {
            int len = arr.Length;
            for (var i = 0; i < arr.Length; i++)
            {
                for (var n = i + 1; n < arr.Length; n++)
                {
                    if (arr[n] < arr[i])
                    {
                        var temp = arr[i];
                        arr[i] = arr[n];
                        arr[i] = temp;
                    }
                }

            }
        }
        static void Main(string[] args)
        {
            var arr = new int[]{1,2,5,6,7,3,4,56,7,7};
            Sort1(arr);
            foreach (var i in arr)
            {
                Console.WriteLine(i);
            }
            var arr2 = new int[] { 1, 2, 5, 6, 7, 3, 4, 56, 7, 7 };
            Sort1(arr2);
            foreach (var i in arr2)
            {
                Console.WriteLine(i);
            }
            Console.ReadKey();

        }


以下为这两种排序算法的对比:

选择排序与冒泡排序比较的次数是一样的

选择排序的交换次数要比冒泡排序的交换次数少

以下为这两种算法的关键点:

为了找出最小的元素而扫描一遍数组,并不能为下一遍扫描提供任何信息,

  这样就造成这种现象:一个有序的数组和一个无需的数组排序时间是一样的

交换次数和数组的大小是线性的

  数组越大,以为着交换次数也越大



基础排序总结(冒泡排序、选择排序、插入排序)

1、冒泡排序1.1、简介与原理冒泡排序算法运行起来非常慢,但在概念上它是排序算法中最简单的,因此冒泡排序算法在刚开始研究排序技术时是一个非常好的算法。冒泡排序原理即:从数组下标为0的位置开始,比较下标...
  • u013249965
  • u013249965
  • 2016年09月18日 16:08
  • 3002

各种排序总结(一)之--—冒泡排序、选择排序、快速排序

各种排序总结——冒泡排序、选择排序、快速排序        1、冒泡排序是比较经典的排序方法,是一种用时间换空间的排序方法。我总结了一下它的特点:(1)它的时间复杂度是;(2)每一趟相邻元素两两比较完...
  • xinyu2015
  • xinyu2015
  • 2015年11月04日 16:36
  • 4124

排序算法解析——冒泡排序、选择排序、快速排序

时间复杂度是度量算法执行的时间长短,而空间复杂度是度量算法所需存储空间的大小。 算法的时间复杂度记做:T(n)=O(f(n))     在计算时间复杂度的时候,先找出算法的基本操作,然后根...
  • sdwuyulunbi
  • sdwuyulunbi
  • 2012年12月14日 11:04
  • 11192

java中冒泡排序与选择排序的区别

初学java语言,排序算法绝对是我们拿来实践的好例子。而在排序中有两种简单的算法是绕不开的,就是冒泡排序与选择排序。下面来分别讲解: 冒泡算法:假设数组长度为lenght,冒泡算法的外循环为leng...
  • tiantianhuanle
  • tiantianhuanle
  • 2016年10月15日 21:27
  • 5702

【算法】冒泡排序与选择排序的递归实现

1 冒泡排序 1 冒泡排序: void bubbleSort(int *data,int start,int end) { if (start < end) { int te...
  • chenglibin1988
  • chenglibin1988
  • 2013年05月19日 15:09
  • 6371

冒泡排序,选择排序,插入排序的区别

#include int swap(int *a,int *b) { int t=*a; *a=*b; *b=t; } /* 冒泡排序的原理:每次在无序队列里将相邻两个数依...
  • wdkirchhoff
  • wdkirchhoff
  • 2014年12月07日 14:02
  • 8726

冒泡排序和选择排序法的图示解析

思路:在进行冒泡法排序(升序)时,需要将数组元素(len)两两比较,如果 前面的元素大于后面的元素,则交换两个数,否则,比较下一个元素和它的下一个元素的大小,依次执行,执行一次循环,可以找到当前...
  • qq_34992845
  • qq_34992845
  • 2016年11月22日 00:25
  • 1550

【算法】插入排序/冒泡排序/选择排序

插入排序 插入排序的思想为:从数组的第二个元素开始遍历整个数组。针对每个元素,依次将其前面的所有元素和他进行比较,大于它的元素均向后移动,最后将该元素插入。 插入排序是一种稳定的排序算法。 时间...
  • cauchyweierstrass
  • cauchyweierstrass
  • 2015年11月10日 20:33
  • 1855

三种基本排序-冒泡排序、直接插入排序、选择排序

冒泡排序(从大到小)       原理:对于n个数,需要进行n-1次扫描,每次扫描通过相邻两个数的比较,找出最大的数,放到数列顶部。      程序:    1.冒泡排序1:每次扫描把下一个元素和最前...
  • chao360559040
  • chao360559040
  • 2010年10月29日 11:25
  • 14117

C#-冒泡排序和选择排序

将一个数组排序 //排序 #include int main() { int a[]={3,5,2,56,275,85,29,24}; int temp,i,j; int length= s...
  • qiulh125
  • qiulh125
  • 2015年12月25日 15:53
  • 842
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:选择排序与冒泡排序
举报原因:
原因补充:

(最多只允许输入30个字)