您的位置:首页 > 其它

插入排序

2020-02-03 04:01 246 查看

1.算法步骤

  将第一个待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列.

  从头到尾一次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置.(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面).

2.举例说明

  (1)直接插入排序

  

现有一个无序数组,共7个数:89 45 54 29 90 34 68。

使用直接插入排序法,对这个数组进行升序排序。

  89 45 54 29 90 34 68

  45 89 54 29 90 34 68

  45 54 89 29 90 34 68

  29 45 54 89 90 34 68

  29 45 54 89 90 34 68

  29 34 45 54 89 90 68

  29 34 45 54 68 89 90

 

3.代码展示

1 //java代码实现---插入排序
2 public class InsertSort implements IArraySort{
3
4     @Override
5     public int[] sort(int[] sourceArray) {
6         //对arr进行拷贝,不改变参数内容
7         int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
8
9         //从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个
10
11         for(int i = 1;i < arr.length ; i++){
12
13             //记录要插入的数据
14             int tmp = arr[i];
15
16             //从已经排序的序列最右边的开始比较,找到比其小的数
17
18             int j = i;
19             while(j > 0 && tmp < arr[j-1]){
20                 arr[j] = arr[j-1];
21                 j--;
22             }
23             //存在比其小的数,插入
24             if(j!=i){
25                 arr[j] = tmp;
26             }
27         }
28         return arr;
29
30     }
31
32 }

 

转载于:https://www.cnblogs.com/xiaofantongxue/p/10452903.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
a773978690 发布了0 篇原创文章 · 获赞 0 · 访问量 85 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: