博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
插入排序(C#实现)
阅读量:4685 次
发布时间:2019-06-09

本文共 2811 字,大约阅读时间需要 9 分钟。

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序。插入排序包括:直接插入排序,二分插入排序,希尔排序等。

直接插入排序:

1         private static void InsertSort(int[] inputArray) 2         { 3             for (int i = 1; i < inputArray.Length; i++) 4             { 5                 int record = i; 6                 for (int j = i-1 ; j >= 0; j--) 7                 { 8                     if (inputArray[j] > inputArray[record]) 9                     {10                         inputArray[j] = inputArray[j] + inputArray[record];11                         inputArray[record] = inputArray[j] - inputArray[record];12                         inputArray[j] = inputArray[j] - inputArray[record];13                         record = j;14                     }15                 }16             }17         }

二分插入排序:

1         private static void BinaryInsertSort(int[] inputArray) 2         { 3             int highIndex = 0; 4             int lowIndex = 0; 5             int midIndex = 0; 6             int temp; 7             for (int i = 0; i < inputArray.Length; i++) 8             { 9                 temp = inputArray[i];10                 highIndex = i - 1;11                 while (lowIndex <= highIndex)12                 {13                     midIndex = (lowIndex + highIndex) / 2;14                     if (inputArray[midIndex] >= temp)15                     {16                         highIndex = midIndex - 1;17                     }18                     else19                     {20                         lowIndex = midIndex + 1;21                     }22                 }23                 for (int j = i - 1; j > highIndex; j--)24                 {25                     inputArray[j + 1] = inputArray[j];26                 }27                 inputArray[highIndex + 1] = temp;28             }29         }

希尔排序:

1         private static void ShellSort(int[] inputArray) 2         { 3             int temp; 4             for (int distance = inputArray.Length / 2; distance > 0; distance--) 5             { 6                 for (int i = 0; i < distance; i++) 7                 { 8                     for (int j = i; j < inputArray.Length; j = j + distance) 9                     {10                         temp = inputArray[j];11                         int index = j - distance;12                         while (index >= 0 && temp < inputArray[index])13                         {14                             inputArray[index + distance] = inputArray[index];15                             index -= distance;16                         }17                         inputArray[index + distance] = temp;18                     }19                 }20             }21           22         }

 

插入排序是稳定排序,时间复杂度是O(n2),而希尔排序时不稳定排序,时间复杂度 平均时间 O(nlogn) 最差时间O(n^s) 1<s<2

转载于:https://www.cnblogs.com/ByronsHome/p/3529479.html

你可能感兴趣的文章
fabric使用
查看>>
分数的表示和运算
查看>>
jsp form表单提交,后台接收提交数据的三种方式
查看>>
SQL Server 2008 清空删除日志文件
查看>>
循环创建目录
查看>>
生成带logo的二维码
查看>>
不急着往前赶,先把一些经典的题重新做几遍
查看>>
[FZYZOJ 1249] 水果堆
查看>>
tomcat源码分析(三)一次http请求的旅行-从Socket说起
查看>>
基于Windows环境下的PHP开发环境搭建
查看>>
蓝桥--兰顿蚂蚁[模拟]
查看>>
字符串基本操作
查看>>
2-4 Sass的函数功能-颜色函数
查看>>
Spring学习第一天---Spring是什么
查看>>
Servlet容器理解(生命周期、servletContext作用域、servlet装载方式)
查看>>
vs2008 sp1补丁包 安装失败
查看>>
分页存储过程优化--同时返回数据总数
查看>>
关于APK签名的一些东西
查看>>
让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
查看>>
innerHTML与innerText的区别
查看>>