效果图:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int[] j = new int[10];
private void button1_Click(object sender, EventArgs e)
{
textBox1.Clear();
Random r = new Random();
for (int i = 0; i < 10; i++)
{
int sum = r.Next(0, 100);
j[i] = sum;
textBox1.Text += sum.ToString() + ",";
}
}
private void button2_Click(object sender, EventArgs e)
{
if (textBox1.Text != null)
{
int inc; //定义一个int便令,用来确定每个有序序列的个数
for (inc = 1; inc <= j.Length / 9; inc = inc * 3 + 1) //为有序序列赋值
{
for (int i = inc + 1; i <= j.Length; i += inc)
{
int t = j[i - 1]; //记录当前值
int k = i; //定义下一个索引
while ((k > inc) && (j[k - inc - 1] > t))
{
j[k - 1] = j[k - inc - 1]; //交换数据
k -= inc;
}
j[k - 1] = t; //将下一个元素值设置为当前值
}
}
textBox2.Clear();
foreach (int i in j)
{
textBox2.Text += i.ToString() + ","; //向空间内添加字符串
}
}
else
{
MessageBox.Show("首先应当生成数组,然后进行排序");
}
}
}
}
希尔排序法(缩小增量法) 属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序的方法。