开发者社区> 问答> 正文

写出直接插入排序的算法InsertSort (int a[],int n)。

写出直接插入排序的算法InsertSort (int a[],int n)。

展开
收起
知与谁同 2018-07-22 20:28:24 2648 0
2 条回答
写回答
取消 提交回答
  • Nothing for nothing.
    void  InsertSort(int a[], int n)
    {
        int  i, j, tmp;
        for (i=1; i<n; ++i) {
            tmp = a[i];
            j = i-1;
            while(j>=0 && a[j] > tmp)  {//递增排序
                a[j+1] = a[j];
                j--;
            }
            a[j+1] = tmp;
        }
    }
    2019-07-17 22:50:17
    赞同 展开评论 打赏
  • 阿里云开发者社区运营负责人。原云栖社区负责人。
    // 直接插入排序算法
    void InsertSort (int a[],int n){ // 假设要排序元素从下标为1开始,下标为0的元素设为0
        int i,j;
        for(i=2;i<=n;i++){
            if(a[i]<a[i-1]){  // 需要把a[i]插入有序子表
               a[0]=a[i];  // 设置哨兵
               for(j=i-1;a[j]>a[0];j--){
                   a[j+1]=a[j];  // 元素后移  
               }
               a[j+1]=a[0];  // 插入到正确的位置 
            }
        }
    }
    2019-07-17 22:50:17
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载