C#冒泡排序法及优化

冒泡排序法及优化:

static void Main(string[] args)
        {
            int[] sums = { 20, 2, 1, 26, 27, 28 };
            int compareCount = 0;

            //冒泡排序法
            for (int i = 0; i < sums.Length - 1; i++) //总共要比较的趟数
            {
                for (int j = 0; j < sums.Length - 1 - i; j++) //每趟中要比较的次数
                {
                    if (sums[j] > sums[j + 1]) //判断两个数值的大小,若前一项比后一项大,则交换位置
                    {
                        int temp = sums[j];//定义一个中间量temp
                        sums[j] = sums[j + 1];
                        sums[j + 1] = temp;
                    }

                    compareCount++;
                }
            }

            //冒泡排序法优化       //当循环内交换不再进行时,也就是整个序列已经有序,这时可以结束排序以达到优化目的
            bool flag = true;
            for (int i = 0; i < sums.Length - 1 && flag; i++) //总共要比较的趟数
            {
                flag = false;
                for (int j = 0; j < sums.Length - 1 - i; j++) //每趟中要比较的次数
                {
                    if (sums[j] > sums[j + 1]) //判断两个数值的大小,若前一项比后一项大,则交换位置
                    {
                        int temp = sums[j];//定义一个中间量temp
                        sums[j] = sums[j + 1];
                        sums[j + 1] = temp;

                        flag = true;
                    }

                    compareCount++;
                }
            }

            Console.Write("使用冒泡排序后得到的顺序为:");
            for (int i = 0; i < sums.Length; i++) //将排序后的数值按序输出
            {
                Console.Write(sums[i] + " ");
            }
            Console.WriteLine();
            Console.WriteLine("排序次数为:");
            Console.WriteLine(compareCount);
            Console.ReadKey();
        }


如果这些类容帮助到你了,希望您给予支持 o(^▽^)o

(支付宝)

时间: 2024-10-21 12:12:34

C#冒泡排序法及优化的相关文章

算法之旅 | 冒泡排序法

冒泡排序法 HTML5学堂-码匠:本期继续走入算法 -- 冒泡排序法.冒泡排序算法相对简单,容易上手,稳定性也比较高, 算是一种较好理解的算法,也是面试官高频提问的算法之一. Tips:关于"算法"及"排序"的基础知识,在此前"选择排序法"中已详细讲解,可点击文后的相关文章链接查看,在此不再赘述. 冒泡排序法的原理 基本原理 从序列头部开始遍历,两两比较,如果前者比后者大,则交换位置,直到最后将最大的数(本次排序最大的数)交换到无序序列的尾部,从

算法大神之路----排序(冒泡排序法)

冒泡排序法 冒泡排序法又称为交换排序法,是由观察水中冒泡变化构思而成,气泡随着水深压力而改变.气泡在水底时,水压最大,气泡最小,而气泡慢慢浮上水面时,气泡所受压力最小,体积慢慢变大. 冒泡排序比较方式是从第一个元素开始,比较相邻的元素大小,如果大小顺序有误,则对调后进行下一个元素比较.直到所有元素满足关系为止. 冒泡排序法分析 冒泡排序法平均情况下,需要比较(n-1)/2次,时间复杂度为O(n2),最好的情况只需要扫描一次,不用操作,即作n-1次比较,时间复杂度为O(n). 由于冒泡排序为相邻两

PHP 冒泡排序法

1 <?php 2 // 冒泡排序法:将一个数组中的值按照从小到大的顺 序排序 3 $arr = array(1, 4, 5, 2, 3, 7, 9, 8); 4 $len = count($arr); 5 $len2= $len - 1; 6 for ($i = 0; $i < $len; $i++) 7 { 8 for ($j = 0; $j < $len2; $j++) 9 { 10 if ($arr[$j] > $arr[$j + 1]) // 比较当前的与下一个的大小 1

关于Java中的选择排序法和冒泡排序法

一,这种方法是直接传入一个数组进行排序(选择排序法) public static void selectSort(int arr[]){ for (int i = 0; i < arr.length-1; i++) { for (int j = i+1; j < arr.length; j++) { if(arr[j]<arr[i]){ int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } } 二,这种事传入一个数组和一个数组个数(选择排序

PHP冒泡排序法

冒泡排序法是一种很基础的排序方法,也是面试题中经常问到的一道题目.今天做了一下简单的分析,具体代码和思路如下 1 <?php 2 3 /*思路: 4 *按照元素顺序循环比较, 5 * 当前元素为$array[$i],取后面的元素与 6 * $array[$i]比较,所以应该从第$j($j=$i+1)个元素开始比较; 7 * 8 *比较$array[$i]和$array[$j]的大小,将较大的元素放到前面,所以要使用中间变量$tmp 9 *过渡 10 * 11 *因为$i次循环后,只能保证$arr

C#冒泡排序法学习

一,冒泡排序法理解:就是将一个集合里的数据当前位置和后一位比较,然当前位置大于后一位,则两个位置替换,直到排序完成 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MaoPao { class Program { static void Sort(int[] sArray) { bool sw = true; do { sw = false; for (

【算法分析】冒泡排序法

今天突然心血来潮了,想开始看算法了,立此博文,开始对算法系列开始完善,争取每周两文.在分析过程中可能想法较笨,希望各位能够宽容和帮助,如果有更好的意见和建议,可随时留言批评.闲话少数,开始正文. 第一次程序 // 通过一次循环将数组中第一个数安排到数组中比它小的数之前 for (int i = 0; i < test.Length - 1; i++) // 此处不能为test.Length,数组溢出.说明从头到尾交换的最大次数 = 数组元素个数 - 1 { if (test[i] < test

1)①排序算法之交换排序[1]冒泡排序法

1 #include "iostream" 2 using namespace std; 3 4 //************冒泡排序法********* 5 int bubble_sort(int n,int array[100]){ 6 bool exchange; 7 int i,j,temp; 8 i=1; 9 do{ 10 exchange=false; 11 for(j=n-1;j>=i;j--){ 12 if(array[j]<array[j-1]){ 13

一、冒泡排序法对随机生成的十个数按升序进行排序

//运用冒泡排序法对随机生成的十个数按升序进行排序 //首先分析我们用冒泡排序法对这十个数排序,即用第一个数跟第二个数比较,然后将大的放到后面,接着跟第三个比较...... //我们定义一个数组名arrInt[],长度为10,定义一个变量i来记录是第几个数 int i = 0; int j = 1; int t = 0;//定义一个空位置交换时使用 int[] arrInt=new int[10];//定义一个长度为10的数组 Random rd=new Random(); Console.Wr