排序算法--直接插入排序

算法思想:

直接插入排序的基本思想是每一步将右边一个待排序的记录,插入到左边已经排好序的有序序列中去,直到插完数组中的所有元素为止。
上图:


1024555-20161126000335346-416319390.png

代码实现

public class Insertion{
  //插入排序
  public static void sort(int[] arr){
   for(int i = 0;i<arr.length;i++){
         //最坏的比较次数:1+2+3+...+(N-1)=(N-1+1)*(N-1)/2=N*(N-1)/2 约为N^2/2
          //最好的比较次数为N-1次
          //平均比较次数约为N^2/4
          for(int j = i;j>0 && arr[j]<arr[j-1];j--){
          swap(arr,j.j-1)
          }
    }
 }

   
//交换指定元素
  public static void swap(int[] arr,int i,int j){
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
  }


}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • //插入排序,把待排序的数组分为两部分,左边为已经有序的数组,右边为待排序的元素。然后不断的从右边取出元素放入左边...
    明月倚深秋阅读 1,670评论 0 0
  • 直接插入算法 顾名思义,就是在有序数组中适当的位置插入元素。 算法思路:把待排序的数组,第0位的元素看做是一个排好...
    守敬阅读 1,589评论 0 0
  • 1. 算法描述 第i(1<=i<n)趟,数据序列为{a0,a1,a2...an-1},其前i个元素构成的子序列a{...
    yulongsun阅读 2,929评论 0 0
  • 本人对排序算法理解不深,希望通过动手写一写排序算法的实现,加深印象和理解 算法过程 把待排序数据分为2个区: 有序...
    假程序猿阅读 2,490评论 0 0
  • 现在刚到成都 感恩一切都顺利 感恩父母帮我照顾孩子 感恩老公让我很安心,但我觉得这份安心是自己带给自己的 感恩若竹...
    Lulu轻悦阅读 1,094评论 0 0

友情链接更多精彩内容