常见排序算法(未完明天继续更)

折半排序

 1  void half_insert_sort(int a[],int n)
 2 {
 3     for(int i=1;i<n;i++)
 4    {
 5         int low=0;
 6         int high=i-1;//not n-1
 7         int mid;
 8         int t=a[i];
 9         while(low<high)
10         {
11             mid=(high-low)/2;
12             if(a[mid]>t)
13             {
14                 high=mid--;
15             }
16             else
17             {
18                 low=mid++;
19             }    
20         }
21         for(int j=i;j>mid;j--)
22         {
23             a[j]=a[j-1];
24             a[low]=t;
25         }
26    }
27    }

 

希尔排序

void shell_sort(int a[],int n)
{
      int d,temp;
      for(int d=n/2;d>=1;i/=2)
     {
           for(int i=d;i<n;i++)
          {
               temp=a[i];
               for(int j=i-d;a[j]>temp&&j>=0;j-=d)
              {
                   a[j+d]=a[j];
              }
               a[j+d]=temp;
          }
     }
}

直接选择排序

void select_sort(int a[],int n)
{
    int temp,k
    for(int i=0;i<n-1;i++)
    {
        min=a[i];
        for(int j=i+1;j<n;j++)
        {
             if(a[j]<min)
             min=a[j];
             k=j;
        }
        swap(a[i],a[k]);
     }
}

堆排序

 

posted on 2015-07-31 00:18  AYuan-  阅读(166)  评论(0)    收藏  举报