开发者社区 问答 正文

插入法排序!!

插入法排序,一定要插入一个数吗??其原理是怎样的,谢谢!!

展开
收起
知与谁同 2018-07-15 16:16:56 1342 分享 版权
2 条回答
写回答
取消 提交回答
  • 就像打牌的时候把扑克牌排序一样 把a[i]插入到前i-1个已经排好序的序列当中 生成长度为i的序列 依次向后处理。
    #include<iostream>
    using namespace std;
    int a[100],n;
    int main()
    {
    cin>>n; //读入
    for (int i=1;i<=n;i++) cin>>a[i];
    for (int i=2;i<=n;i++)//排序 从2开始(明白。)
    {
    int p=i;
    while (p>1&&a[p]<a[p-1]) {swap(a[p],a[p-1]);p--;}//向前找到合适的位置
    }
    for (int i=1;i<n;i++) cout<<a[i]<<" ";//输出
    cout<<a[n]<<endl;
    return 0;
    }
    2019-07-17 22:50:08
    赞同 展开评论
  • 静静的看着你们
    插入排序代码
    #include "stdio.h"
    main()
    {
    int i,j,a[5]={12,10,58,9,23},t;

    for(i=1;i<5;i++) //核心代码
    {
    t=a[i];
    j=i-1;
    while(j>=0 && a[j]>t)
    {
    a[j+1]=a[j];
    j--;
    }
    a[j+1]=t;

    }

    for(i=0;i<5;i++)
    printf("%d ",a[i]);
    printf("\n");
    }
    2019-07-17 22:50:08
    赞同 展开评论
问答地址: