zoukankan      html  css  js  c++  java
  • Insertion Sort

    1. 直接插入排序算法:

    代码
            /// <summary>
            
    /// 插入排序
            
    /// </summary>
            
    /// <param name="data"></param>
            public static void InsertionSort(int[] data)
            {
                
    if (data == null || data.Length < 1)
                {
                    
    throw new ArgumentNullException("data");
                }

                
    int temp, index;
                
    for (int i = 1; i < data.Length; i++)
                {
                    temp 
    = data[i];
                    index 
    = i;

                    
    while (index > 0 && temp < data[index - 1])
                    {
                        data[index] 
    = data[--index];
                    }
                    data[index] 
    = temp;
                }
            }

    2. 折半插入排序:

    代码
            /// <summary>
            
    /// 折半插入排序
            
    /// </summary>
            
    /// <param name="data"></param>
            public static void Bin_InsertionSort(int[] data)
            {
                
    if (data == null || data.Length < 1)
                {
                    
    throw new ArgumentNullException("data");
                }

                
    int low, mid, high;
                
    for (int i = 1; i < data.Length; i++)
                {
                    
    // 折半查找
                    low = 0;
                    high 
    = i - 1;
                    
    while (low <= high)
                    {
                        mid 
    = (low + high) / 2;
                        
    if (data[i] < data[mid])
                        {
                            high 
    = mid - 1;
                        }
                        
    else
                        {
                            
    if (data[i] > data[mid])
                            {
                                low 
    = mid + 1;
                            }
                            
    else
                            {
                                low 
    = mid;
                                
    break;
                            }
                        }                    
                    }

                    
    // 移动元素
                    int temp = data[i];
                    
    for (int j = i; j > low; j--)
                    {
                        data[j] 
    = data[j - 1];
                    }
                    data[low] 
    = temp;
                }
            }
  • 相关阅读:
    自问自答
    手动调用__doPostBack('xx','') 在IE6, 下留意 javascript:void(0);问题。
    ora10ginstant 精简客户端遇到 system.data.oracleclient 需要 oracle 客户端软件8.1.7 或更高版本
    VS2010 下T4引用程序集,未能找到元数据文件(xxx.dll could not be found)
    asp.net Ajax 页中使用jqueryeasyui的显示问题处理
    [原]SWFUpload 在IE9下不显示问题及IE9中模态窗下flash文件选择问题的处理
    JQueryeasyui accordion 滚动条在IE6下“丢失”的处理
    消息队列
    测试内容
    C# 时间计算 今天、昨天、前天、明天 一个月的开始日期与结束日期
  • 原文地址:https://www.cnblogs.com/Langzi127/p/1689990.html
Copyright © 2011-2022 走看看