插入算法

直接插入排序算法java实现

1、算法概念。

每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。

2、算法思想。

 假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成1个有序区,无序区为R[2..n]。从i=2起直至i=n为止,依次将R[i]插入当前的有序区R[1..i-1]中,生成含n个记录的有序区。

3、实现思路。

①用一个临时变量temp存储第i个元素(i>=1,下标从0开始)。

②比较R[i] 和R[i+1],如果R[i+1].compareTo(R[i])<0,则R[i+1] = R[i],即比R[i+1]的集合元素依次往右移动一个单位。

③将temp的值赋给R[i].

4、实现代码。

/**

     * description : 直接插入排序 ( straight insertion sort )

     * @autor kwzhang

     * modify :2012-6-20

     *

     * @param original 需要排序的数组

     * @param from 起始位置,以0为基准

     * @param length 数据长度

     * @return

     */

    public static void sis(String[] original, int from, int length) throws Exception {

        if (from < 0 || length < 0 || from + length > original.length) {

            throw new IllegalArgumentException("Array out of bound .");

        }

        for (int i = from + 1; i < from + length; i++) {

            String temp = original[i];

            int j = i - 1;

            while (j >= 0) {

                if (temp.compareTo(original[j]) < 0) {

                    original[j + 1] = original[j];

                } else {

                    break;

                }

                j--;

            }

            original[j + 1] = temp;

        }

    }

时间: 2024-12-28 01:42:52

插入算法的相关文章

房上的猫:数组插入算法等难点专开

一:查找算法 二:复制算法 三:插入算法

冒泡排序、选择排序及插入算法

一.冒泡排列 冒泡排序的原理如下,以8个数由大到小排列为例,进行说明,数据存放在数组a[8]中. 假如8个数分别为4.9.10.3.2.14.11.5. a[0]<a[1]即4<9,故交换位置,9.4.10.3.2.14.11.5 a[1]<a[2]即4<10,故交换位置,9.10.4.3.2.14.11.5 a[2]>a[3]即4>3,位置不变,继续比较 a[3]>a[4]即3>2,位置不变,继续比较 a[4<a[5]即2<14,故交换位置,9

Java中数组的几个常用算法:插入算法,删除算法,冒泡排序算法

前言: 在Java中我们常常会用数组,提到数组就不得不介绍数组中常用到的几个算法. 有插入算法,删除算法,冒泡排序算法等. 在学习这几个数组的算法前,我们先来了解一下关于数组一些基本知识. 数组的基本知识: 数组的定义:数组(Array)是相同数据类型的数据的有序集合. 数组是引用数据类型. 数组的三个特点: [1]数组长度是确定.数组一旦申请完空间,长度不能发生变化,用length属性访问. [2]数组的元素都是同一数据类型. [3]数组是有序的 .每个元素通过下标/索引标记,索引从0开始.

二叉搜索树插入算法C#演示的代码

如下内容内容是关于二叉搜索树插入算法C#演示的内容,希望能对大伙有帮助. public class BinaryTreeNode{ public BinaryTreeNode Left { get; set; } public BinaryTreeNode Right { get; set; } public int Data { get; set; } public BinaryTreeNode(int data) { this.Data = data; }} public void Inse

排序算法-(冒泡、选择、插入算法)

运行效率较慢的三大排序算法:冒泡.选择与插入算法,时间复杂度都为O(n2),运行效率较慢. #python 代码实现如下所示: li=[2,1,4,5,7,8,9,5,3]#冒泡算法(升序算法)O(n2)import randomfrom cal_time import *@cal_timedef bubble_sort(li): for i in range(len(li)-1): #第i趟 exchange=False for j in range(len(li)-i-1): #无序区域为n

插入算法 转载

插入排序算法是一个对少量元素进行排序的有效算法.插入排序的工作原理与打牌时整理手中的牌的做法类似,开始摸牌时,我们的左手是空的,接着一次从桌上摸起一张牌,并将它插入到左手的正确位置.为了找到这张牌的正确位置,要将它与手中已有的牌从右到左进行比较,无论什么时候手中的牌都是排序好的. JAVA实现该算法如下: 1 public void insertSort(int a[]){ 2 int length=a.length; //数组长度 3 int j; //当前值的位置 4 int i; //指向

C语言实现折半插入算法

1 #include <stdio.h> 2 int BInsertSort(int array[],int left,int right){ //接收主函数调用语句中的实参传到这里的形参里 3 int low,high,mid; 4 int temp; 5 for(int i=left+1;i<=right;++i){ 6 temp=array[i]; //把第2个数(也就是下标1位置的数)存到temp临时变量里,即从第2个数开始往后的序列依次按照折半插入插入到第一个数的数列里(默认第

数组(插入算法[int])

1 public static void main(String[] args) { 2 //在一个数组中插入一个数据[步骤]----前提:该数组是有序数组!!! 3 //01.首先声明这个数组 4 //刚开始的数组 5 int[] num = { 10, 25, 36, 49 }; 6 //遍历输出num数组元素 7 for (int i = 0; i < num.length; i++) { 8 System.out.print(num[i] + "\t"); 9 } 10

php的插入算法

1 <?php 2 /** 3 * 插入排序 4 */ 5 class insterSort 6 { 7 public function sort_out($sortNum){ 8 $length=count($sortNum);//计算数组长度 9 for ($i=0; $i <$length ; $i++) { 10 $temp=$sortNum[$i];//取出插入值 11 for ($j=$i-1; $j>=0; $j--) { //要注意这里是大于等于零,这里数组的下标是从0开