说明:冒泡、直接插入、选择、自带方法四中基本排序算法。

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;





namespace OrderBy {

    public partial class Form1 : Form {

        public Form1() {

            InitializeComponent();

        }        

        private void Form1_Load(object sender, EventArgs e) {

            try {

                //定义六个整形数组

                int[] arr1 = new int[10] { 3, 2, 1, 10, 4, 5, 6, 9, 7, 8 };

                int[] arr2 = new int[10] { 3, 2, 1, 10, 4, 5, 6, 9, 7, 8 };

                int[] arr3 = new int[10] { 3, 2, 1, 10, 4, 5, 6, 9, 7, 8 };

                int[] arr4 = new int[10] { 3, 2, 1, 10, 4, 5, 6, 9, 7, 8 };

                int[] arr5 = new int[10] { 3, 2, 1, 10, 4, 5, 6, 9, 7, 8 };

                int[] arr6 = new int[10] { 3, 2, 1, 10, 4, 5, 6, 9, 7, 8 };





                string maopao = "";//冒泡排序 方法一

                string maopao2 = "";//冒泡排序 方法二

                string insert = "";//插入排序 方法一

                string insert2 = "";//插入排序 方法二

                string select = "";//选择排序 

                string arrayMethod = "";//自带函数排序





                //变量数组

                OrderByMaoPao(arr1);

                foreach (int n in arr1) {

                    maopao += "," + n;

                }



                OrderByMaoPao2(arr2);

                foreach (int n in arr2) {

                    maopao2 += "," + n;

                }



                OrderByInsert(arr3);

                foreach (int n in arr3) {

                    insert += "," + n;

                }



                OrderByInsert2(arr4);

                foreach (int n in arr4) {

                    insert2 += "," + n;

                }



                OrderBySelect(arr5);

                foreach (int n in arr5) {

                    select += "," + n;

                }



                Array.Sort(arr6);

                foreach (int n in arr6) {

                    arrayMethod += "," + n;

                }



                //去掉逗号

                maopao = maopao.Substring(1, maopao.Length - 1);

                maopao2 = maopao2.Substring(1, maopao2.Length - 1);

                insert = insert.Substring(1, insert.Length - 1);

                insert2 = insert2.Substring(1, insert2.Length - 1);

                select = select.Substring(1, select.Length - 1);

                arrayMethod = arrayMethod.Substring(1, arrayMethod.Length - 1);



                string output = "冒泡1:"+maopao + "\r\n冒泡2:" + maopao2 + "\r\n插入1:" + insert + "\r\n插入2:" + insert2 + "\r\n选择 :" + select+"\r\n方法 :"+arrayMethod;

               // txt.Text = output;

                MessageBox.Show(output,System.Windows.Forms.Application.ProductName);

            } catch (Exception ex) {

                MessageBox.Show(ex.Message);

                return;

            }

        }

        /// <summary>

        /// 冒泡排序 方法一

        /// </summary>

        /// <param name="array">要排序的数组</param>

        private void OrderByMaoPao(int[] array) {

            //arr.GetLength(0) 获取个数  也可以用arr.Length

            for (int i = 0; i < array.Length; i++) {

                for (int j = i; j < array.Length-1; j++) {

                    int temp;

                    if (array[i] >= array[j + 1]) {

                        temp = array[i];

                        array[i] = array[j + 1];

                        array[j + 1] = temp;

                    }

                }

            }

        }

        /// <summary>

        /// 冒泡排序 方法二

        /// </summary>

        /// <param name="array">要排序的数组</param>

        private void OrderByMaoPao2(int[] array) {

            int j, temp;

            for (int i = 0; i < array.Length-1; i++) {

                j = i + 1;

            id:                              //定义一个标识

                if (array[i] > array[j]) {

                    temp = array[i];

                    array[i] = array[j];

                    array[j] = temp;

                    goto id;

                } else {

                    if (j < array.Length - 1) {

                        j++;

                        goto id;

                    }

                }

            }

        }

        /// <summary>

        /// 直接插入排序 个人理解(把一个值,插入到表中,位置是:比上一个数大、比下一个小)

        /// </summary>

        /// <param name="array">要排序的数组</param>

        private void OrderByInsert(int[] array) {

            for (int i = 0; i < array.Length - 1; i++) {

                for (int j = i + 1; j <= array.Length - 1; j++) {

                    if (i > 0) {//前两个已存在

                        if (array[i] > array[j] && array[i - 1] < array[j]) {

                            int temp = array[i];

                            array[i] = array[j];

                            array[j] = temp;

                        }

                    } else {    //第二个数

                        if (array[i] > array[j]) {

                            int temp = array[i];

                            array[i] = array[j];

                            array[j] = temp;                           

                        } 

                    }                    

                }

            }

        }

        /// <summary>

        /// 直接插入排序 简洁

        /// </summary>

        /// <param name="array">要排序的数组</param>

        private void OrderByInsert2(int[] array) {

            for (int i = 0; i <= array.Length - 1; i++) {

                int temp = array[i];

                int j = i;

                while (j > 0 && array[j - 1] > temp) {  //通过盘点,值一次次提前

                    array[j] = array[j - 1];

                    --j;

                }

                array[j] = temp;

            }

        }

        /// <summary>

        /// 选择排序 获取最小值

        /// </summary>

        /// <param name="array">要排序的数组</param>

        private void OrderBySelect(int[] array) {

            for (int i = 0; i <= array.Length - 1; i++) {

                int min = array[i];

                for (int j = i + 1; j <= array.Length - 1; j++) {

                    int temp;

                    if (min > array[j]) {

                        min = array[j];





                        temp = array[i];

                        array[i] = array[j];

                        array[j] = temp;

                        

                    }                 

                }

            }

        }

        

    }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

C# 数组排序 基本算法 分类: C# 2014-09-25 15:43 129人阅读 评论(0) 收藏的更多相关文章

  1. Drainage Ditches 分类: POJ 图论 2015-07-29 15:01 7人阅读 评论(0) 收藏

    Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 62016 Accepted: 23808 De ...

  2. 彩色模型 分类: 图像处理 Matlab 2015-01-08 20:43 364人阅读 评论(0) 收藏

    彩色模型(又称彩色空间或彩色系统)是描述色彩的一种方法,本质上,彩色模型就是坐标系统和子空间的规范,系统中的每种颜色由单个点来表示.下面介绍两种最常用的彩色模型. 一.RGB彩色模型: RGB模型是最 ...

  3. C/C++中const的用法 分类: C/C++ 2015-07-05 00:43 85人阅读 评论(0) 收藏

    const是C语言的关键字,经C++进行扩充,变得功能强大,用法复杂.const用于定义一个常变量(只读变量),当const与指针,引用,函数等结合起来使用时,情况会变得复杂的多.下面将从五个方面总结 ...

  4. Find The Multiple 分类: 搜索 POJ 2015-08-09 15:19 3人阅读 评论(0) 收藏

    Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21851 Accepted: 8984 Sp ...

  5. 周赛-DZY Loves Chessboard 分类: 比赛 搜索 2015-08-08 15:48 4人阅读 评论(0) 收藏

    DZY Loves Chessboard time limit per test 1 second memory limit per test 256 megabytes input standard ...

  6. Ultra-QuickSort 分类: POJ 排序 2015-08-03 15:39 2人阅读 评论(0) 收藏

    Ultra-QuickSort Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 48111   Accepted: 17549 ...

  7. cf 61E. Enemy is weak 树状数组求逆序数(WA) 分类: Brush Mode 2014-10-19 15:16 104人阅读 评论(0) 收藏

    #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> ...

  8. max_flow(Dinic) 分类: ACM TYPE 2014-09-02 15:42 94人阅读 评论(0) 收藏

    #include <cstdio> #include <iostream> #include <cstring> #include<queue> #in ...

  9. SQL 分组 加列 加自编号 自编号限定 分类: SQL Server 2014-11-25 15:41 283人阅读 评论(0) 收藏

    说明: (1)日期以年月形式显示:convert(varchar(7),字段名,120) , (2)加一列 (3)自编号: row_number() over(order by 字段名 desc) a ...

随机推荐

  1. 实例分析jdom和dom4j的使用和区别

    对于xml的解析和生成,我们在实际应用中用的比较多的是JDOM和DOM4J,下面通过例子来分析两者的区别(在这里我就不详细讲解怎么具体解析xml,如果对于xml的解析看不懂的可以先去看下我之前关于do ...

  2. sencha touch中按钮的ui配置选项值及使用效果

  3. wamp安装注意点!

    安装wamp前或者重装系统后,默认没有依赖的组件VC11,需要先安装才能运行 下载地址:http://www.microsoft.com/en-us/download/details.aspx?id= ...

  4. mysql datestamp坑

    每次更改行数据,该行第一个datestamp如不赋值,会自动更新为当前时间.赋值还要注意用下new Date(time).updated_at要写在created_at前面...

  5. Smarty实现HTML静态化页面

    <?phprequire_once("./config/config.php"); ob_start();$id=$_GET[id];$sql="select * ...

  6. UITableView 全面详解

    在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是UITableView.当然它的广泛使用自然离不 ...

  7. classpath目录

    WEB-INF/ 是资源目录, 客户端不能直接访问, 这话是没错,不过现在的IDE编译器在编译时会把src下的文件(是文件,不是.java)移到WEB-INF/classes下.不过值得注意的是,sp ...

  8. 各大Oj平台介绍[转]

    1.题库与网站资源题库-在线提交系统(Online Judge)简介   下面是几个比较大的在线提交系统(OnlineJudge)里面有大量历年的竞赛题目,注册一个ID,然后用自己熟悉的语言(一般有P ...

  9. dyld: lazy symbol binding failed: Symbol not found: _objc_setProperty_nonatomic

    这个错误,一般在高版本设备里面不会出现,而在低版本会出现比如你的项目或者引入的静态库的Deployment Target设置成了ios6.0而你的测试设备是ios5.0甚至更低,就会出现如上错误.因为 ...

  10. 【HTTP】IE的URL的最大长度限制和如何解决URL最大长度的限制

    习惯了用户URL传递参数的方便和快捷,然而大多数人并没有了解通过GET方式请求页面并传递一个过长的参数的话,IE浏览器会自动的截取超出最大长度的字符的!微软的权威解释,IE的url最大长度是2083个 ...