直接插入排序实现之一————带哨兵的实现

1690阅读 0评论2014-02-27 double_lq
分类:C/C++


  1. //当一维数组作为函数参数的时候,编译器总是把它解析成一个指向数组首元素首地址的指针
  2. //因此DirectInsertSort的函数形式有两种:DirectInsertSort(int a[],int n);DirectInsertSort(int *a,int n);

  3. #include<iostream>
  4. using namespace std;

  5. int DirectInsertSort(int a[],int n)
  6. {
  7.     //cout<<sizeof(a)<<endl;
  8.     for(int i=2;i<=n-1;i++)
  9.     {
  10.      if(a[i]<a[i-1])
  11.         {
  12.          a[0]=a[i];
  13.             a[i]=a[i-1];        
  14.          for(int j=i-2;a[0]<a[j];--j)
  15.              a[j+1]=a[j];
  16.          a[j+1]=a[0];
  17.         }
  18.     }
  19.     return 0;
  20. }
  21. /*
  22. int main()
  23. {
  24.     int array[9]={-100,7,25,9,2,13,8,4,1};
  25.     DirectInsertSort(array,9);
  26.     for(int i=1;i<9;i++)
  27.         cout<<array[i]<<' ';
  28.     return 0;


  29. }
  30. */

  31. int main()
  32. {
  33.     int k;
  34.     int array[6];
  35.     for(int i=0;i<6;i++)
  36.     {
  37.      printf("please input array[%d] value:",i);
  38.         scanf("%d",&k);
  39.         array[i]=k;
  40.     }
  41.     printf("current array value:\n");
  42.     for(i=1;i<6;i++)
  43.         printf("%d ",array[i]);
  44.     DirectInsertSort(array,6);
  45.     printf("after sort,the array is:\n");
  46.     for(i=1;i<6;i++)
  47.         printf("%d ",array[i]);
  48.     return 0;
  49. }

运行结果:
   


上一篇:Eclipse提交hadoop程序出错:org.apache.hadoop.security.AccessControlException
下一篇:c++对数组的引用