java插入排序 Insert sort实例

时间:2023-07-21 07:07:37 


     //直接插入排序
void DirectInsertionSort(int* arr, int nLen)
{
    int i, j;
    for (i=1; i<nLen; i++)
    {
        int temp = arr[i];
        for (j=i-1; j>=0; j--)
        {
            if (temp < arr[j])
                arr[j+1] = arr[j];
            else
                break;
        }
        if (j+1 != i)
            arr[j+1] = temp;    //注意这里是j+1
    }
}

//折半插入排序
void BinaryInsertionSort(int* arr, int nLen)
{
    int i, j;
    int low, mid, high;
    for (i=1; i<nLen; i++)
    {
        int temp = arr[i];
        if (temp < arr[i-1])//这个判断可不要
        {
            low = 0;
            high = i-1;
            while (low <= high) //error: while( low < high) 注意这里还需要 等号
            {
                mid = (low+high)/2;
                if (temp < arr[mid])
                    high = mid - 1;
                else
                    low = mid + 1;
            }
            //经过上面的折半查找插入位置后,这时插入位置为low或者high+1,这时low等于high+1
            //for (j=i-1; j>=high+1; j--)
            //{
            //    arr[j+1] = arr[j];
            //}
            //arr[high+1] = temp;

            for (j=i-1; j>=low; j--)
            {
                arr[j+1] = arr[j];
            }
            arr[low] = temp;
        }
    }
}  

标签:插入排序,Insert,sort
0
投稿

猜你喜欢

  • Java编程中使用throw关键字抛出异常的用法简介

    2023-08-27 17:04:19
  • Java编程关于子类重写父类方法问题的理解

    2022-05-25 05:00:32
  • Android 判断SIM卡是中国移动\\中国联通\\中国电信(移动运营商)

    2023-01-22 04:20:27
  • C# XML基础入门小结(XML文件内容增删改查清)

    2022-10-18 17:12:02
  • C#中out保留字用法实例分析

    2021-07-28 18:44:54
  • Java使用easyExcel导出excel数据案例

    2022-02-21 19:39:27
  • 解析c#操作excel后关闭excel.exe的方法

    2021-08-14 16:55:22
  • Java 使用IO流实现大文件的分割与合并实例详解

    2023-08-23 09:33:33
  • java图片添加水印实例代码分享

    2022-06-10 04:06:03
  • Spring Boot静态资源路径的配置与修改详解

    2022-09-15 19:27:08
  • 深入了解Hadoop如何实现序列化

    2023-10-13 10:33:43
  • C#中将xml文件反序列化为实例时采用基类还是派生类的知识点讨论

    2022-08-04 19:27:32
  • 解决Springboot get请求是参数过长的情况

    2023-11-27 16:45:37
  • 如何正确使用Android线程详解

    2021-12-06 19:24:30
  • java判断String类型是否能转换为int的方法

    2022-08-17 23:45:52
  • Android MVP模式实战教程

    2023-09-05 13:16:54
  • AsyncTask官方文档教程整理

    2023-07-31 20:25:08
  • C# Double转化为String时的保留位数及格式方式

    2021-09-08 13:12:00
  • WPF调用ffmpeg实现屏幕录制

    2023-04-23 13:57:00
  • Android 文件存储与SharedPreferences存储方式详解用法

    2021-07-22 20:11:54
  • asp之家 软件编程 m.aspxhome.com