zoukankan      html  css  js  c++  java
  • 经典数组排序方法------选择排序法,冒泡排序法

    一:使用选择排序法,冒泡排序法对一维数组进行排序,截图

    /*选择排序的个人理解:
    第一遍内循环,选出其中最大的值,得到值和下标
    外层循环将最大的值的位置和数组的第一个位置交换
    从数组的第二个位置开始第二遍筛选
    将其中最大的值的位置和数组的第二个位置交换
    直到筛选完数组
    */

    /*冒泡排序法的个人理解

    第一次内循环将相邻的两个数的较大值放到右边,从而得到最后边的值是最大的

    外循环将进行下一次的内循环,将次最大的数值放到倒数第二个位置

    外循环执行n-1次得到排序的数

    */

    二:代码

    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 selectSortArray
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            int[] array = { 0, 5, 8, 7, 4, 6, 3, 2, 9,1 };//新建数组
            private void Form1_Load(object sender, EventArgs e)
            {
               
                for(int i=0;i<array.Length;i++)//将数组显示在文本框里
                {
                    tb_numfirst.Text += array[i].ToString()+"  ";
                }
               
    
    
            }
    
            private void btn_score_Click(object sender, EventArgs e)
            {
                #region 选择排序
                ///*选择排序的个人理解:
                //   第一遍内循环,选出其中最大的值,得到值和下标
                //   外循环将最大的值的位置和数组的第一个位置交换
                //   从数组的第二个位置开始第二遍筛选
                //   将其中最大的值的位置和数组的第二个位置交换
                //   直到筛选完数组
                // */
                //tb_new.Clear();//清除已有的显示
                //int tem=0;//用于存放最大的数
                //int num = 0;//用于存放下标
    
                //for (int j = 0; j < array.Length-1; j++)//将得到的最大的数存放到位置和指定为交换位置,没有最后一位
                //{
                //    tem = array[j];//用于存放最大的数
                //    num = j;//用于存放最大的数的下标
                //    for (int i = j+1; i < array.Length-1; i++)//得到一组中最大的数
                //    {
                        
                //        if (array[i + 1] > tem)
                //        {
                //            tem = array[i+1];//将最大的数存起来
                //            num = i+1;//将最大的数的下标存起来
                //        }
                //    }
                //    array[num] = array[j];//将首位放到数值最大的位置
                //    array[j] = tem;//将最大的数放到首位
                    
                //}
                //for (int i = 0; i < array.Length; i++)//将数组显示在文本框里
                //{
                //    tb_new .Text += array[i].ToString() + "  ";
                //}
                #endregion
                #region 冒泡排序
                /*第一次内循环将相邻的两个数的较大值放到右边,从而得到最后边的值是最大的
                  外循环将进行下一次的内循环,将次最大的数值放到倒数第二个位置
                  外循环执行n-1次得到排序的数
                 */
    
                for (int j = 0; j < array.Length-1; j++)//外循环n-1次确保每遍使最大的数放到右边
                {
                    for (int i = 0; i < array.Length - 1; i++)//将相邻的两个数比较,较大的数放到右边,从而使最后的数是最大的
                    {
                        if (array[i] > array[i + 1])//判断左边是否大于右边
                        {
                            int tem = array[i];//用来存放较大的数
                            array[i] = array[i + 1];//较小的数放到左边
                            array[i + 1] = tem;//较大的数放到右边
                        }
                    }
                }
                for (int i = 0; i < array.Length; i++)//将数组显示在文本框里
                {
                    tb_new.Text += array[i].ToString() + "  ";
                }
                #endregion
    
            }
        }
    }
  • 相关阅读:
    基于maven使用IDEA创建多模块项目
    开发时用于文件前说明
    nginx配置ThinkPHP配置
    spring原理机制
    将spring源码导入到eclipse中
    【调试】Core Dump是什么?Linux下如何正确永久开启?
    【最详细最完整】在Linux 下如何打包免安装的QT程序?
    Linux 下qt 程序打包发布(使用linuxdelpoyqt ,shell 脚本)
    Ubuntu 守护进程
    【Qt】QLabel之动态阴影边框
  • 原文地址:https://www.cnblogs.com/hongmaju/p/3773076.html
Copyright © 2011-2022 走看看