回顾C#经典算法冒泡排序

冒泡算法的原理:

  • 比较相邻的两个数字,如果第一个数字比第二个数字大,则交换它们位置
  • 从开始第一对比较到结尾最后一对,最后一个数字就是最大数
  • 除了最后一个数字,再次从开始第一对比较到最后一对,得出第二大的数字
  • 重复上面操作,直到没有任何一对数字需要比较

举例说明:要排序数组:int[] arr={6,3,8,2,9,1};

第一趟排序:

    第一次排序:6和3比较,6大于3,交换位置: 3 6 8 2 9 1

    第二次排序:6和8比较,6小于8,不交换位置:3 6 8 2 9 1

    第三次排序:8和2比较,8大于2,交换位置: 3 6 2 8 9 1

    第四次排序:8和9比较,8小于9,不交换位置:3 6 2 8 9 1

    第五次排序:9和1比较:9大于1,交换位置: 3 6 2 8 1 9

    第一趟总共进行了5次比较, 排序结果: 3 6 2 8 1 9



第二趟排序:

    第一次排序:3和6比较,3小于6,不交换位置:3 6 2 8 1 9

    第二次排序:6和2比较,6大于2,交换位置: 3 2 6 8 1 9

    第三次排序:6和8比较,6大于8,不交换位置:3 2 6 8 1 9

    第四次排序:8和1比较,8大于1,交换位置: 3 2 6 1 8 9

    第二趟总共进行了4次比较, 排序结果: 3 2 6 1 8 9



第三趟排序:

    第一次排序:3和2比较,3大于2,交换位置: 2 3 6 1 8 9

    第二次排序:3和6比较,3小于6,不交换位置:2 3 6 1 8 9

    第三次排序:6和1比较,6大于1,交换位置: 2 3 1 6 8 9

    第二趟总共进行了3次比较, 排序结果: 2 3 1 6 8 9



第四趟排序:

    第一次排序:2和3比较,2小于3,不交换位置:2 3 1 6 8 9

    第二次排序:3和1比较,3大于1,交换位置: 2 1 3 6 8 9

    第二趟总共进行了2次比较, 排序结果: 2 1 3 6 8 9



第五趟排序:

    第一次排序:2和1比较,2大于1,交换位置: 1 2 3 6 8 9

    第二趟总共进行了1次比较, 排序结果: 1 2 3 6 8 9



最终结果:1 2 3 6 8 9



从上面可以得出:N个数字进行排序,需要经过N-1趟排序,每i趟排序N-i次

使用双重循坏,外层控制循坏多少趟,内层控制每趟循坏的次数

for (int i = 0; i < list.Length-1; i++)
{
       for (int j = 0; j < list.Length-1-i; j++)
       {
             //交换位置
       }
}

代码实现:

using System;

namespace 冒泡排序
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr = new[] { 2, 4, 1, 68, 43, 21 };
            int temp = 0;
            for (int i = 0; i < arr.Length - 1; i++)  //外层循环控制排序趟数
            {
                for (int j = 0; j < arr.Length - 1 - i; j++)  //内层循环控制每一趟排序多少次
                {
                    if (arr[j] > arr[j + 1])
                    {
                        temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }

            foreach (var ar in arr)
            {
                Console.Write(ar + " ");
            }
            Console.ReadLine();

        }
    }
}

实现的冒泡排序:

原文地址:https://www.cnblogs.com/ButterflyEffect/p/10255292.html

时间: 2024-10-13 20:17:23

回顾C#经典算法冒泡排序的相关文章

三个典型的经典算法冒泡排序,插入排序,选择排序

稍微轻松点,彻底理解了一下这三个算法,当然只是部分,还有什么改良版,具体分类等等,不过下周有事,先把这几个典型的弄明白,老规矩,看代码说问题 /** * Created by fanyafeng on 2015/5/8/0008. */ public class ALGTest { public static void main(String[] args) { System.out.println("排序算法"); System.out.println("---------

Java经典算法冒泡排序

冒泡排序. 实现原理: 比较两个相邻位数的元素,将较大的元素交换到右端或左端,最大的元素就在最右端或是最左端:   从小-->大 1 public class MaoPao { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 Scanner sc= new Scanner(System.in); 6 int [] num = new int [5]; 7 for (int i

经典算法--冒泡排序(Java)

原理:将相邻元素的较大值赋给右边 思路:① 1.将集合或数组内的第一个元素与第二个元素进行比较,较大值赋给右边: 2.将第二个元素与第三个元素进行比较,较大值赋给右边: ....... (N-1).将第N-1个元素与第N个元素进行比较,较大值赋给右边: 自此,得到集合中元素最大值并将其赋给元素N; ② 重复操作① 得到元素N-1的新值:得到元素N-2的新值: ...... 得到元素2的值,得到元素1的值 实例: 为 Arr[5] = {3,5,2,8,1}排序: 第一趟排序: 3,5,2,8,1

经典排序算法 - 冒泡排序Bubble sort

 原文出自于 http://www.cnblogs.com/kkun/archive/2011/11/23/bubble_sort.html 经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第

Java中的经典算法之冒泡排序(Bubble Sort)

Java中的经典算法之冒泡排序(Bubble Sort) 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后.重复第一趟步骤,直至全部排序完成. 举例说明:要排序数组:int[] arr={6,3,8,2,9,1}; 第一趟排序: 第一次排序:6和3比较,6大于3,交换位置:  

经典算法学习——非循环双向链表实现冒泡排序(不带头结点)

我在前面两篇博客<经典算法学习--单链表(不带头结点)实现冒泡排序><经典算法学习--单链表实现冒泡排序(带头结点)>中详细描述了分别使用带头结点和不带头结点的单链表实现了冒泡排序,让我们对单链表和冒泡排序有了理性的认识.今天我们将会来使用不带头结点的非循环双向链表来实现冒泡排序,在处理过程中,这种冒泡比前面两种更为简单高效.代码上传至 https://github.com/chenyufeng1991/DoubleLinkedList_BubbleSort . 核心代码如下: /

白话经典算法系列之一 冒泡排序的三种实现

分类: 白话经典算法系列 2011-08-06 19:20 93923人阅读 评论(72) 收藏 举报 算法优化 冒泡排序是非常容易理解和实现,,以从小到大排序举例: 设数组长度为N. 1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换. 2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置. 3.N=N-1,如果N不为0就重复前面二步,否则排序完成. 按照定义很容易写出代码: [cpp] view plaincopy //冒泡

经典算法学习——链表实现冒泡排序

我在之前一篇博客<经典算法学习--冒泡排序>中简单实现了使用数组进行冒泡排序.这篇博客我们将来实现使用链表如何排序,其实整体的思路是一样的.示例代码上传至: https://github.com/chenyufeng1991/BubbleSortLinkedList . 算法描述如下: (1)比较相邻的前后两个数据,如果前面数据大于后面的数据,就将两个数据交换: (2)这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就到了最后一个位置,也就是下标为N-1的位置(沉到了水底).

经典算法-回顾(前十)

关于 曾经的48种经典算法与23种常用设计模式相信都不陌生了,不过好久没看了而且当时看的时候也没有整理出来,现在就慢慢整理出来(后续会慢慢更新,这里只是对经典算法进行整理): 目录: 1.河内之塔_TowersOfHanoi2.费氏数列_Fibonacci3.巴斯卡三角形4.三色棋5.老鼠走迷官16.老鼠走迷官27.骑士走棋盘_KnightTour8.八皇后9.八枚银币10.生命游戏 先来看看基本说明和解法: 1.河内之塔_TowersOfHanoi 说明 河内之塔(Towers of Hano