//文件中的数据格式为 // 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]); } } } }