using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 冒泡排序算法
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/*
算法:冒泡法
问题:无序数排列
问题描述:有一组无序排列的整数,通过算法计算使它们成为从小到大依次排列?
问题分析:
首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则交换两记录的值。
然后比较第二个和第三个记录的关键字,依次类推,直至最后一个记录也进行过比较。
上述过程称为第一趟冒泡排序,其结果是最大值被安置到最后一个记录的位置上。
进行第二趟排序,对前N-1个记录进行同样的排序。
依次类推,当进行完N-1趟排序后,所有记录有序排列。
备注
*/
int[] s = new int[10];//存放要排序的数
//窗体载入
private void Form1_Load(object sender, EventArgs e)
{
button2_Click(sender, e);//执行按钮2的事件,取随机数
}
//取随机数
private void button2_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();//清空列表
Random r = new Random();//随机数种子
for (int i = 0; i <10; i++)
{
s[i] = r.Next(100);//产生10个随机数填入数组
listBox1.Items.Add(s[i].ToString());//随机数填入控件
}
}
//排序
private void button1_Click(object sender, EventArgs e)
{
listBox2.Items.Clear();//清空列表
for (int i = 0; i <= s.Length; i++)//第一层循环
{
for (int j = i+1; j < s.Length; j++)//第二层循环
{
if (s[i] > s[j])//按升序交换位置,数大的在后面
{
int k;//中间变量
k = s[j];
s[j] = s[i];
s[i] = k;
}
}
}
//把排序后的数组循环添加到窗体控件上
for (int i = 0; i < 10; i++)
{
listBox2.Items.Add(s[i].ToString());
}
}
}
}