Chinaunix首页 | 论坛 | 博客
  • 博客访问: 359430
  • 博文数量: 60
  • 博客积分: 15
  • 博客等级: 民兵
  • 技术积分: 1138
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-20 16:18
个人简介

最多140个字

文章分类

全部博文(60)

文章存档

2016年(1)

2015年(34)

2014年(25)

分类: C/C++

2014-03-20 18:45:20


点击(此处)折叠或打开

  1. //直接插入排序
  2. void InsertSort(int *a, int n)//下标从0开始。
  3. {
  4.     int i;
  5.     for(i=1;i<n;i++)
  6.     {
  7.         int j=i-1;
  8.         int temp=a[i];
  9.         while((a[j]>temp)&&(j>=0))
  10.         {
  11.             a[j+1]=a[j];
  12.             j--;
  13.         }
  14.         a[j+1]=temp;
  15.     }
  16.     for(i=0;i<n;i++)
  17.         printf("%d,",a[i]);
  18.     putchar('\n');
  19. }

  20. void InsertSort(int *a, int n)//下标从1开始。
  21. {
  22.     int i;
  23.     for(i=2;i<n;i++)
  24.     {
  25.         int j=i-1;
  26.         a[0]=a[i];
  27.         while((a[j]>a[0])&&(j>=1))
  28.         {
  29.             a[j+1]=a[j];
  30.             j--;
  31.         }
  32.         a[j+1]=a[0];
  33.     }
  34.     for(i=1;i<n;i++)
  35.         printf("%d,",a[i]);
  36.     putchar('\n');
  37. }


点击(此处)折叠或打开

  1. //折半插入排序
  2. void BinaryInsertSort(int* a,int n)//下标从0开始。
  3. {
  4.     int i;
  5.     int j;
  6.     for(i=1;i<n;i++)
  7.     {
  8.     
  9.         int low=0;
  10.         int high=i-1;
  11.         int temp=a[i];
  12.         if(a[i]>=a[i-1])
  13.             continue;
  14.         while(low<=high)
  15.         {
  16.             int mid=(low+high)/2;
  17.             if(a[mid]>a[i])
  18.                 high=mid-1;
  19.             else
  20.                 low=mid+1;
  21.         }
  22.         for(j=i-1;j>=low;j--)
  23.         {
  24.             a[j+1]=a[j];
  25.         }
  26.         a[low]=temp;    
  27.     }
  28.     for(i=0;i<n;i++)
  29.         printf("%d,",a[i]);
  30.     putchar('\n');    
  31. }

  32. void BinaryInsertSortx(int* a,int n)//下标从1开始。
  33. {
  34.     int i;
  35.     int j;
  36.     for(i=2;i<n;i++)
  37.     {
  38.         int low=1;
  39.         int high=i-1;
  40.         if(a[i]>=a[i-1])
  41.             continue;
  42.         a[0]=a[i];
  43.         while(low<=high)
  44.         {
  45.             int mid=(low+high)/2;
  46.             if(a[mid]>a[i])
  47.                 high=mid-1;
  48.             else
  49.                 low=mid+1;
  50.         }
  51.         for(j=i-1;j>=low;j--)
  52.         {
  53.             a[j+1]=a[j];
  54.         }
  55.         a[low]=a[0];
  56.     }
  57.     for(i=1;i<n;i++)
  58.         printf("%d,",a[i]);
  59.     putchar('\n');    
  60. }

阅读(1881) | 评论(0) | 转发(0) |
0

上一篇:extern "C"

下一篇:排序

给主人留下些什么吧!~~