【算法系列】—选择排序

来源:互联网 发布:php redis队列处理秒杀 编辑:程序博客网 时间:2024/06/05 00:30

前言

    学习计算机的程序媛们都知道算法的重要性,算法在我们的知识体系以及日常生活中都起到了非常重要的作用,所以算法的研究指日可待,接下来小编将对算法进行系列的总结,还望各位大神们的指导。   

叙述

   接下来小编将和大家一起学习选择排序,小编将从定义、代码、图、排序过程等方面对选择排序有一个认识。

选择排序

定义:

  假设第一个数是最小的,用第一个数去和后面的所有数据去比较,选择最小的数据放到首位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列队首。以此类推,直到所有元素均排序完毕。      

排序过程:



代码

     方法一:引入位置标量,记录每一次排序完以后的最小数据的位置,每一个内排序只交换一次

 private void btnSelect_Click(object sender, EventArgs e)        {            listBox1.Items.Clear();            int[] data = { 7, 5, 3, 4, 1,2,6,8,9,0 };//带排序列            #region 选择排序            int temp;            for (int i = 0; i < data.Length - 1; i++)            {                int pos = i;                for (int j = i + 1; j < data.Length; j++)                {                    if (data[j] < data[pos])                    {                        pos = j;                    }                }                if (pos != i)                {                    temp = data[i];                    data[i] = data[pos];                    data[pos] = temp;                }                //在listbox中显示排序过程                listBox1.Text = "";                string p = " ";                for (int k = 0; k < data.Length; k++)                {                    p += data[k] + " ";                }                listBox1.Items.Add(p);                p = "";            }            #endregion            //在文本框中显示最终结果            string select = " ";            for (int z = 0; z < data.Length; z++)            {                select += data[z] + " ";            }            textBox2.Text = select;        }

      方法二:每比较一次交换一次

 private void button3_Click(object sender, EventArgs e)        {            listBox1.Items.Clear();            int[] data = { 7, 5, 3, 4, 1, 2, 6, 8, 9, 0 };//带排序列            int temp;            for (int i = 0; i < data.Length - 1; i++)            {                for (int j = i + 1; j < data.Length; j++)                {                    if (data[i] > data[j])                    {                        temp = data[i];                        data[i] = data[j];                        data[j] = temp;                    }                }                //显示排序过程                listBox1.Text = "";                string p = " ";                for (int k = 0; k < data.Length; k++)                {                    p += data[k] + " ";                }                listBox1.Items.Add(p);                p = "";            }            //显示最终结果            string select = " ";            for (int z = 0; z < data.Length; z++)            {                select += data[z] + " ";            }            textBox2.Text = select;        }

小结

      选择排序是最基本的排序之一,实现排序的方法有很多种,我们要使用尽可能多的方法实现选择排序,多角度的去认识一个算法。

原创粉丝点击