直接插入排序(Straight Insertion Sort)是一种最为简单的排序方法,因此也被称为简单插入排序。
直接插入排序的基本思想是:第i趟排序将序列中的第i+1个元素Ki+1插入到一个已经按值有序的子序列(k1,k2,...,ki)中合适的位置,使得插入后的序列依然保持按值有序。
算法描述
实现程序
void insert_sort(ElemType a[],int n)
//待排序元素用一个数组a表示,数组有n个元素
{ int i,j;
ElemType t;
for ( i=1; i<n; i++) //i表示插入次数,共进行n-1次插入
{ t=a[i]; //把待排序元素赋给t
j=i-1;
while ((j>=0)&& (t<a[j]))
{ a[j+1]=a[j]; j--; } // 顺序比较和移动
a[j+1]=t;}
}
PHP实现的代码(实现从大到小的排列次序
):
$arr1 = array(-111,2,5,6,3,7,8,0,9,12,1);
function insertsort($arr1,$max=10){
for($i=1;$i<=$max;$i++){
$tmp = $arr1[$i];
$j = $i - 1;
while($j>=0 && $tmp>$arr1[$j]){
$arr1[$j+1] = $arr1[$j];
$j--;
}
$arr1[$j+1] = $tmp;
}
return $arr1;
}
PHP实现的代码(实现从小到大的排列次序
):
$arr1 = array(-111,2,5,6,3,7,8,0,9,12,1);
function insertsort($arr1,$max=10){
for($i=1;$i<=$max;$i++){
$tmp = $arr1[$i];
$j = $i - 1;
while($j>=0 && $tmp<$arr1[$j]){
$arr1[$j+1] = $arr1[$j];
$j--;
}
$arr1[$j+1] = $tmp;
}
return $arr1;
}
分享到:
相关推荐
直接插入排序是一种简单直观的排序算法,它的工作原理是在一个已经部分排序的数组中,将每个新元素插入到已排序序列中的适当位置,以保持整个序列的有序性。在PHP中实现直接插入排序需要我们理解其基本原理和步骤,...
本文主要探讨了两种常见的排序算法:直接插入排序和希尔排序,这两种算法都是基于比较的排序方法,适用于不同规模和数据特性的数组。 1. **直接插入排序**: 直接插入排序是一种简单直观的排序算法,它的基本思想...
希尔排序的时间复杂度通常比直接插入排序好,但具体取决于增量序列的选择。 **快速排序(Quick Sort)** 快速排序是一种高效的分治算法,通过选择一个“基准”元素,将数组分为两部分,一部分的所有元素都小于基准...
- 小数组采用插入排序:当数组的大小小于一定阈值时,不再使用快速排序,而是切换到插入排序,因为小数组插入排序效率更高。 7. 注意事项: - 快速排序的平均时间复杂度为O(nlogn),最坏情况下时间复杂度会退化到...
2. 插入排序:将数组分为已排序和未排序两部分,每次取未排序部分的第一个元素,插入到已排序部分的合适位置。PHP中可以先遍历数组,然后逐个将元素与已排序部分的元素比较,找到正确位置并插入。 3. 选择排序:...
4. 插入排序:适合小规模数据,将未排序元素逐个插入到已排序序列的正确位置。 5. 堆排序:利用堆这种数据结构进行排序,分为建堆和调整堆的过程。 二、查找算法 1. 线性搜索:最简单的查找方法,从数组的第一个...
插入排序 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将...直接插入排序(Inserti
对于小规模数据,可以使用插入排序,因为插入排序在小规模数据上效率更高。 8. **使用示例**: 用户可以通过实例化`QuickSort`类,然后调用`quickSort()`方法并传入需要排序的数组,即可得到排序后的结果。 这个...
在PHP中,常见的算法包括排序(冒泡排序、选择排序、插入排序、快速排序、归并排序等)、查找(线性查找、二分查找)、图算法(深度优先搜索、广度优先搜索)、动态规划、贪心算法、回溯算法等。 1. **排序算法**:...
本文将介绍几种常见的排序算法及其在PHP中的实现,包括快速排序、选择排序、插入排序、冒泡排序和归并排序。 1. **快速排序**: 快速排序是一种高效的排序算法,由C.A.R. Hoare在1960年提出。其基本思想是采用分治...
常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。 2. **Java实现的排序算法**: Java作为一种面向对象的语言,其丰富的类库和高效性能使得它成为实现排序算法的常用选择。在Java中...
内部排序是指数据在整个排序过程中全部存在于内存中的排序算法,例如木桶排序。 **外部排序** 外部排序是指数据规模太大无法全部放入内存中,需要多次读写磁盘的排序方法。 #### 内存划分 内存划分是指如何合理地...
本文将详细讲解四种PHP中常用的排序算法:基本排序(通常指的是选择排序或冒泡排序)、冒泡排序、快速排序以及插入排序。 1. **基本排序**(这里可能是指的选择排序):选择排序是一种简单直观的排序算法,它的工作...
在某些特定场景下,如内存限制严格或稳定性要求高的排序,可能需要考虑其他算法,如归并排序或插入排序。 在实际开发中,快速排序通常与其他排序算法结合使用,例如在数据预处理阶段先用快速排序大致排序,再用稳定...
这个"PHP算法与数据结构学习 案例代码.zip"压缩包显然是一个针对PHP开发者的学习资源,它包含了多个经典算法的实现以及数据结构的应用。 首先,我们来讨论数据结构。数据结构是组织、管理、存储和检索数据的框架,...
该算法在已排序数组中插入一个新元素,保持原有的排序。通过查找正确位置,将元素插入并移动后续元素。如果插入值比数组最大值还大,直接追加到数组末尾。 5. **快速排序**: 快速排序是一种高效的排序算法,利用...
- 内部排序是在主存中完成的排序算法,适用于数据规模较小的情况。 - **木桶排序**: 通过将数据分配到多个桶中,然后对每个桶内的数据进行排序,最后合并结果来实现排序。 **外部排序** - 外部排序用于处理不能一...
7. **加密算法**:虽然冒泡排序与加密算法直接关系不大,但PHP同样支持AES等加密算法的实现。 通过了解冒泡排序,我们可以深入理解排序算法的基本原理,并以此为基础学习更复杂的算法和数据结构。在实际编程中,...
- **排序算法**:如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。 - **查找算法**:如顺序查找、二分查找、哈希查找。 - **递归与分治策略**:例如斐波那契数列、汉诺塔问题、快速排序等。 - *...