做网站带来好处,wordpress可以做oa系统吗,北京cms建站系统,有创意的30个网站目录 1. 说明2. 举个例子3. java代码示例4. java示例截图 1. 说明 1.希尔排序是直接插入排序的一种改进#xff0c;其本质是一种分组插入排序 2.希尔排序采取了分组排序的方式 3.把待排序的数据元素序列按一定间隔进行分组#xff0c;然后对每个分组进行直接插入排序 4.随着间… 目录 1. 说明2. 举个例子3. java代码示例4. java示例截图 1. 说明 1.希尔排序是直接插入排序的一种改进其本质是一种分组插入排序 2.希尔排序采取了分组排序的方式 3.把待排序的数据元素序列按一定间隔进行分组然后对每个分组进行直接插入排序 4.随着间隔的减小一直到1从而使整个序列变得有序 5.希尔排序适用于大多数数据元素有序的序列由于排序期间同一元素的顺序会经常移动所以希尔排序不是稳定的排序方法
2. 举个例子 示例 [6, 2, 4, 3, 5, 1] 1.获取数组的长度6 2.计算间隔gap6/23 将数组分为3组6和3比较2和5比较4和1比较 3.【6和3比较】拿到索引为0的数6array[j-gap]与索引为3的数3temp进行比较63即array[j-gap] temp 6 3将索引为3的数改为6得到数组[6, 2, 4, 6, 5, 1]jj-gap3-300小于gap跳出while循环 4.将索引为0的数改为3得到数组[3, 2, 4, 6, 5, 1] 5.【2和5比较】拿到索引为1的数2array[j-gap]与索引为4的数5temp)进行比较25则不进行while循环将索引为4的数改为5本身就是5改了不影响, 数组不做改变 6.【4和1比较】拿到索引为2的数4array[j-gap]与索引为5的数1temp)进行比较41即array[j-gap] temp 4 1将索引为5的数改为4得到数组[3, 2, 4, 6, 5, 4]jj-gap5-322小于gap跳出while循环 7.将索引为2的数改为1得到数组[3, 2, 1, 6, 5, 4] 8.计算间隔gap3/21,当间隔为1时数组中的数字基本有序再进行插入排序 9.取索引为1的数2比较索引为0的数32小于3则将索引为1的数改为3,索引为0之前没有数了得到数组[2, 3, 1, 6, 5, 4] 10.取索引为2的数1比较索引为1的数31小于3则将索引为2的数改为3索引为1之前有索引为0的数21小于2则将索引为1的数改为2索引为0的数改为1 (大数往后挪得到数组[1, 2, 3, 6, 5, 4] 11.取索引为3的数6比较索引为2的数36大于3继续 12.取索引为4的数5比较索引为3的数65小于6则将索引为4的数改为6索引为3之前有索引为2的数35大于3则将索引为3的数改为5得到数组[1, 2, 3, 5, 6, 4] 13.取索引为5的数4比较索引为4的数64小于6则将索引为5的数改为6索引为4之前有索引为3的数54小于5则将索引为4的数改为5得到数组[1, 2, 3, 5, 5, 6]索引为3之前有索引为2的数34大于3则将所因为3的数改为4得到数组[1, 2, 3, 4, 5, 6]
3. java代码示例
package com.learning.algorithm.sort;/*** 希尔排序* 示例 6, 2, 4, 3, 5, 1* 1.获取数组的长度6* 2.计算间隔gap6/23 将数组分为3组6和3比较2和5比较4和1比较* 3.【6和3比较】拿到索引为0的数6array[j-gap]与索引为3的数3temp进行比较63即array[j-gap] temp 6 3将索引为3的数改为6得到数组[6, 2, 4, 6, 5, 1]jj-gap3-300小于gap跳出while循环* 4.将索引为0的数改为3得到数组[3, 2, 4, 6, 5, 1]* 5.【2和5比较】拿到索引为1的数2array[j-gap]与索引为4的数5temp)进行比较25则不进行while循环将索引为4的数改为5本身就是5改了不影响, 数组不做改变* 6.【4和1比较】拿到索引为2的数4array[j-gap]与索引为5的数1temp)进行比较41即array[j-gap] temp 4 1将索引为5的数改为4得到数组[3, 2, 4, 6, 5, 4]jj-gap5-322小于gap跳出while循环* 7.将索引为2的数改为1得到数组[3, 2, 1, 6, 5, 4]* 8.计算间隔gap3/21,当间隔为1时数组中的数字基本有序再进行插入排序* 9.取索引为1的数2比较索引为0的数32小于3则将索引为1的数改为3,索引为0之前没有数了得到数组[2, 3, 1, 6, 5, 4]* 10.取索引为2的数1比较索引为1的数31小于3则将索引为2的数改为3索引为1之前有索引为0的数21小于2则将索引为1的数改为2索引为0的数改为1 (大数往后挪得到数组[1, 2, 3, 6, 5, 4]* 11.取索引为3的数6比较索引为2的数36大于3继续* 12.取索引为4的数5比较索引为3的数65小于6则将索引为4的数改为6索引为3之前有索引为2的数35大于3则将索引为3的数改为5得到数组[1, 2, 3, 5, 6, 4]* 13.取索引为5的数4比较索引为4的数64小于6则将索引为5的数改为6索引为4之前有索引为3的数54小于5则将索引为4的数改为5得到数组[1, 2, 3, 5, 5, 6]索引为3之前有索引为2的数34大于3则将所因为3的数改为4得到数组[1, 2, 3, 4, 5, 6]*/
public class ShellSort {public static void sort(int[] array) { int len array.length; for (int gap len / 2; gap 0; gap / 2) { for (int i gap; i len; i) { int temp array[i]; int j i;int index j - gap;while (j gap array[index] temp) {array[j] array[j - gap];j - gap;index j - gap;} array[j] temp; } } }public static void print(int[] array) {for (int i : array) {System.out.print(i );}}public static void main(String[] args) {int array[] {6, 2, 4, 3, 5, 1};sort(array); print(array);}
}4. java示例截图