插入排序inserttion sort顺序版( C语言、java、PHP代码示例 )01
2016-04-17 17:21
447 查看
插入排序inserttion sort顺序版( C语言、java、PHP代码示例 )01
**引例**:玩扑克牌时,将桌子上的无序扑克牌,插入到手中的有序扑克牌,确定其插入位置。
一、使用条件:
存在一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到插入排序法。
二、思路:
1、前提是已经有序的序列,所以只需确定所插入数据数据的位置。而插入后的所有数据向后移动相应的位置即可
2、共有两层:
外层动作是遍历原序列的所有值,内层运动是将每次遍历的值与插入值进行对比
3、外层遍历序列对应着循环语句,内层比较对应着判断语句
4、所需的变量:
数组容器a
当前要插入的值key
当前数据对应的数组下表i
被比较数据对应的数组下表j
循环控制变量length,即数组的长度,可用 a.length进行调用
三、代码示例
*伪代码:
for j=2 to a.length key=a[j] insert a[j] into the sorted sequence a[1..j-1] i=j-1 while i>0 and a[i]>key a[i+1]=a[i] i=i-1 a[i+1]=key
java示例:
*
public class insertionSort0 { //顺序的代码 public void insertionSortOrder(int a[]){ int length=a.length; //数组长度 int j; //当前值的位置 int i; //指向j前的位置 int key; //当前要进行插入排序的值 //从数组的第二个位置开始遍历值 for(j=2;j<length;j++){ key=a[j]; i=j-1; //a[i]比当前值大时,a[i]后移一位,空出i的位置,好让下一次循环的值后移 while(i>=0 && a[i]>key){ a[i+1]=a[i]; //将a[i]值后移 i--; //i前移 }//跳出循环(找到要插入的中间位置或已遍历到0下标) a[i+1]=key; //将当前值插入 } }
*C语言示例:
void insertion_sort(int arr[], int len) { int i, j; int temp; for (i = 1; i < len; i++) { temp = arr[i]; for (j = i - 1; j >= 0 && arr[j] > temp; j--) arr[j + 1] = arr[j]; arr[j+1] = temp; } }
*PHP示例:
function insertion_sort(&$arr) { for ($i = 1; $i < count($arr); $i++) { $temp = $arr[$i]; for ($j = $i - 1; $j >= 0 && $arr[$j] > $temp; $j--) $arr[$j + 1] = $arr[$j]; $arr[$j + 1] = $temp; } }
相关文章推荐
- BOOL与bool,不是一家人
- VS用C语言连接SQL Server解决办法
- [LeetCode]86. Partition List
- 设计模式C++学习笔记之一(Strategy策略模式)
- static成员函数访问非static成员
- 如何使用CppUnit进行单元测试
- C++之输出格式的总结
- c++检测JAVA环境
- C++实验3—多分数段函数求值
- SM2算法第零篇:《SM2椭圆曲线公钥密码算法》概略
- C++的内存分配
- C++实现删除单链表节点的功能(源代码+截图)
- C++ string的查找函数和npos特殊值
- C++11 lambda 表达式解析
- C语言第十四篇:循环嵌套
- c语言 字符串的拼接和分割
- c语言 之 可变参数列表的应用
- 【C++】模拟实现new[]和delete[]
- C语言笔记-getch\getche\getchar的区别
- 输出一个数字上各位数字的两种方法