//文件中的数据格式为
// 1 2 3 4 5
// 1 2 3 5 6
using System;
using System.Text;
using System.Collections;
using System.IO;
namespace InsertSort
{
class Program
{
static void Main()
{
string path=@"F://test.txt";
StreamReader sr = new StreamReader(path, Encoding.Default);
string temp;
ArrayList aL = new ArrayList();
while ((temp = sr.ReadLine()) != null)
{
string[] s = temp.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);//根据空格区分数据
int tempInt;
foreach (string i in s)
{
tempInt = Convert.ToInt32(i); //string转换成int,基本数据类型的转换
aL.Add(tempInt); //将读取到的数据存入aL中
}
}
int[] data = new int[aL.Count]; //将aL中的数据存入data方便使用排序算法排序
for (int i = 0; i < aL.Count; i++)
{
data[i] = (int)aL[i];
}
//希尔排序算法
int d = data.Length / 2;//获取d
while (d > 0)
{
for (int i = d; i < data.Length; i++) //将数组分成data.Length/d组
{
int j = i-d; //代表此组中第一个元素的下标
int k = 1;
while (j + k * d < data.Length) //对其中一组进行直接插入排序
{
int tem=data[j+k*d]; //看做是无序集中的第一个元素
for (int n = 0; n < k; n++) //与有序集中的元素比较
{
if (tem < data[j + n * d])
{
data[j + k * d] = data[j + n * d];
data[j + n * d] = tem;
break;
}
}
k++;
}
}
d /= 2;
}
for (int i=0;i<data.Length; i++)
{
Console.WriteLine(data[i]);
}
}
}
}
C#之希尔排序
本文转载:CSDN博客