C#,C插入排序

2012-07-06

有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外,而第二部分就只包含这一个元素。在第一部分排序后,再把这个最后元素插入到此刻已是有序的第一部分里的位置

C代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10

int main(void)
{
  int a[N],i,j,tmp;
  srand(time(NULL));
  for(i=0;i<N;i++){
    a[i]=rand()%100;
    printf("%3d",a[i]);
  }
  printf("\n");

 //插入排序 
  for(i=1;i<N;i++){//从第二个数开始与第一个数比较
   tmp=a[i];//第一个比较数放入变量
   for(j=i;j>0&&tmp<a[j-1];j--){//这个是算法的核心,将下一个数与前面已经排序好的数一一比较,满足交换条件则交换,不满足跳过继续循环i,然后将tmp变量赋给找到的最小值的下一位
       a[j]=a[j-1];
    }
    a[j]=tmp; 
  }

  //打印排序后
  for(i=0;i<N;i++){
    printf("%3d",a[i]);
  }
  printf("\n");
  return 0;
}

C#代码如下:

总结

作者:robotbird, 分类:关于代码 标签: 算法 , 浏览(2138), 评论(0)
上一篇: C#,C选择排序
下一篇: 从今天开始坚持不刷技术类文章

相关文章

(0)条评论 订阅

发表评论

电子邮件用于回复通知和avatar全球唯一头像 *

*