Java中直接插入排序如何实现长尾词的插入?

2026-04-10 13:291阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计720个文字,预计阅读时间需要3分钟。

Java中直接插入排序如何实现长尾词的插入?

插入排序是一种简单直观的排序算法。具体步骤如下:

1. 选择一个数作为有序序列。

2.将后面的数逐个插入到已排序的序列中。

3.比较要插入的数与已排序序列的每个数,找到合适的位置插入。

例如,对于序列 [5, 2, 4, 6, 1, 3]:

- 首先选择第一个数 5 作为有序序列。

- 将 2 插入到 5 中,得到 [2, 5]。- 将 4 插入到 [2, 5] 中,得到 [2, 4, 5]。- 将 6 插入到 [2, 4, 5] 中,得到 [2, 4, 5, 6]。- 将 1 插入到 [2, 4, 5, 6] 中,得到 [1, 2, 4, 5, 6]。- 将 3 插入到 [1, 2, 4, 5, 6] 中,得到 [1, 2, 3, 4, 5, 6]。

Java中直接插入排序如何实现长尾词的插入?

插入排序的过程就是这样,逐步将无序序列变为有序序列。

一个方法插入排序的方法块,有详细的说明

/**直接插入排序:首先选定一个数作为有序序列,然后把其它无序数一个一个数插入到这个有序序列中。 *插入过程:将要插入的这个数从有序序列的最后一个数开始比较,若小于,则被比较的这个数后移1;再和倒数第二个比较....直至插入后为有序序列 *@param base int[]类型,待排序数组 *@return base 返回排好序的数组 */ public int[] directInsertSort(int[] order){ //首先判断如果数组长度小于等于1,则不用进行排序,直接返回 if(order.length <= 1){ return order; } /* 首先默认数组第一个数是有序的,即下标为0 算法说明,首先第一个for代表待插入数据,即无序数据,初始i为1,即数组下标为1的元素开始进行插入。 第二个for代表当前的有序数据,初始j的值即是当前有序数组的最大的下标(因为需要从后往前插)。 过程:首先insertIndexOf动态的记录待插入数的当前位置,初始值是i的值,然后依次与有序数组从后往前比, 若比有序数组下标为j的数小,则和它交换位置,并且把下标j赋给insertIndexOf。这样就相当于有序数 组下标为j的数向后移了一位,然后它插入。 以此循环,直到遇到比它小的,那么它的位置就不用动了 ,然后直接进入下一个数进行插入。 */ int temp = 0; //作为临时变量 for(int i = 1;i < order.length;i++){ int insertIndexOf = i; //初始化待插入数的当前位置 for(int j = i - 1;j >= 0;j--){ if(order[insertIndexOf] < order[j]){ temp = order[insertIndexOf]; order[insertIndexOf] = order[j]; order[j] = temp; insertIndexOf = j; }else{ break; //如果待插入数比它前一位数大则不用继续下一轮比较,跳出本层循环,进行下一个数插入 } } } return order; }

本文共计720个文字,预计阅读时间需要3分钟。

Java中直接插入排序如何实现长尾词的插入?

插入排序是一种简单直观的排序算法。具体步骤如下:

1. 选择一个数作为有序序列。

2.将后面的数逐个插入到已排序的序列中。

3.比较要插入的数与已排序序列的每个数,找到合适的位置插入。

例如,对于序列 [5, 2, 4, 6, 1, 3]:

- 首先选择第一个数 5 作为有序序列。

- 将 2 插入到 5 中,得到 [2, 5]。- 将 4 插入到 [2, 5] 中,得到 [2, 4, 5]。- 将 6 插入到 [2, 4, 5] 中,得到 [2, 4, 5, 6]。- 将 1 插入到 [2, 4, 5, 6] 中,得到 [1, 2, 4, 5, 6]。- 将 3 插入到 [1, 2, 4, 5, 6] 中,得到 [1, 2, 3, 4, 5, 6]。

Java中直接插入排序如何实现长尾词的插入?

插入排序的过程就是这样,逐步将无序序列变为有序序列。

一个方法插入排序的方法块,有详细的说明

/**直接插入排序:首先选定一个数作为有序序列,然后把其它无序数一个一个数插入到这个有序序列中。 *插入过程:将要插入的这个数从有序序列的最后一个数开始比较,若小于,则被比较的这个数后移1;再和倒数第二个比较....直至插入后为有序序列 *@param base int[]类型,待排序数组 *@return base 返回排好序的数组 */ public int[] directInsertSort(int[] order){ //首先判断如果数组长度小于等于1,则不用进行排序,直接返回 if(order.length <= 1){ return order; } /* 首先默认数组第一个数是有序的,即下标为0 算法说明,首先第一个for代表待插入数据,即无序数据,初始i为1,即数组下标为1的元素开始进行插入。 第二个for代表当前的有序数据,初始j的值即是当前有序数组的最大的下标(因为需要从后往前插)。 过程:首先insertIndexOf动态的记录待插入数的当前位置,初始值是i的值,然后依次与有序数组从后往前比, 若比有序数组下标为j的数小,则和它交换位置,并且把下标j赋给insertIndexOf。这样就相当于有序数 组下标为j的数向后移了一位,然后它插入。 以此循环,直到遇到比它小的,那么它的位置就不用动了 ,然后直接进入下一个数进行插入。 */ int temp = 0; //作为临时变量 for(int i = 1;i < order.length;i++){ int insertIndexOf = i; //初始化待插入数的当前位置 for(int j = i - 1;j >= 0;j--){ if(order[insertIndexOf] < order[j]){ temp = order[insertIndexOf]; order[insertIndexOf] = order[j]; order[j] = temp; insertIndexOf = j; }else{ break; //如果待插入数比它前一位数大则不用继续下一轮比较,跳出本层循环,进行下一个数插入 } } } return order; }