直接插入排序法

一.什么叫直接插入排序法?

所谓插入排序法,就是检查第i个数字,如果在它的左边的数字比它大,进行交换,这个动作一直继续下去,直到这个数字的左边数字比它还要小,就可以停止了。

二.排序步骤:

对下列数组进行排序:(22,36,4,51,36,8,44,5,62,14,5,6,32,12)

1.)分别定义数组和变量
 int arr[]={22,36,4,51,36,8,44,5,62,14,5,6,32,12};
 int min;
 int h;
2.)排序实现:
1.单层for 循环对比相邻的两个数如果后面的数小于前面的数将后面数的值送给变量min中
2. 并讲后面较小值的下标保存到h中
for (int i = 1; i <arr.length ; i++) {
            if(arr[i]<arr[i-1]){
                min=arr[i];
                h=i;//将当前较小的值的坐标赋给h
              //此处还需将值插入到前面适当的位置
            }
        }
        
3.用while 循环判断出min中的值应该插入在前面值的何处
  while(h>0 && arr[h-1]>min){
                    arr[h]=arr[h-1];
                    h--;
                }
                arr[h]=min;

三.完整程序:

/**直接插入排序法
 * Created by pc on 17-4-2.
 */
public class Insertion_sort {
    public static void Insertion(int[] arr){
        int min;
        int h;
        for (int i = 1; i <arr.length ; i++) {
            if(arr[i]<arr[i-1]){
                min=arr[i];
                h=i;//将当前较小的值的坐标赋给h
                while(h>0 && arr[h-1]>min){
                    arr[h]=arr[h-1];
                    h--;
                }
                arr[h]=min;
            }
        }
        for (int aa:arr) {
            System.out.print(aa+" ");
        }
    }
    public static void main(String[] args) {
        int arr[]={22,36,4,51,36,8,44,5,62,14,5,6,32,12};
        Insertion(arr);

    }
}

结果展示:
排序结果

排序算法文集:排序算法总结

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,243评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,755评论 0 15
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,293评论 0 2
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 2,327评论 0 35