• C#之希尔排序


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

  • 相关阅读:
    win10自动休眠解决方法
    创世纪游戏、黄金分割比
    placeholder和assign速度对比
    内耗
    windows下编写dll
    北航院系和数字的对应关系
    maven Could not resolve dependencies
    java9模块不可见问题
    maven-dependencies插件的模拟实现
    Freemarker简单封装
  • 原文地址:https://www.cnblogs.com/zztong/p/6695182.html
Copyright © 2020-2023  润新知