C++各种排序的实现

来源:互联网 发布:linux脚本写超大文件 编辑:程序博客网 时间:2024/05/13 02:28

#include <stdio.h>

void QuickSort(int *data,int low,int high)  //快速排序 
{
   int i = low;
   int j = high;
   int temp = 0;
   if(i<j)
   {  
    temp = data[i];
    while(i!=j)
    {
     while(i < j && data[j]>temp)
      j--;
     if (i<j)
     {
      data[i] = data[j];
      i++;
     }
     while(i < j && data[i]<temp)
      i++;
     if (i<j)
     {
      data[j] = data[i];
      j--;
     }
    }
    data[i] = temp;
    QuickSort(data,low,i-1);
    QuickSort(data,i+1,high);
   }
}

void  InsertSort(int *pData,int num)
{
 int i=0,j=0;
 int temp = 0;
 for (i=0;i<num;i++)
 {
  j = i-1;
  temp = pData[i];
        while(j>=0 && temp < pData[j])
  {
    pData[j+1] = pData[j];
          j--;
  }
  pData[j+1] = temp;
 }
}

void  BinInsertSort(int *pData,int num)   // 折半插入排序
{
 int i=0,j=0;
 int low =0 ,mid =0 ,high = 0;
 int temp = 0;
 for (i=0;i<num;i++)
 {   
    temp = pData[i];
       low = 0;
    high = i-1;
    while(low<=high)              

    {
          mid = (low+high)/2;
    if (temp < pData[mid])
    {
     high = mid-1;
    }
    else
    {
              low = mid+1;
    }
    }
    for (j=i-1;j>=low;j--)
    {
     pData[j+1] = pData[j];
    }
    pData[j+1] = temp;
 }
}

void  BubbleSort(int *pData,int num)   //冒泡排序
{
 int i=0,j=0;
 int temp = 0;
 for (i=0;i<num;i++)
 {
       for (j=0;j<num-i-1;j++)
       {
          if (pData[j]>pData[j+1])
          {
             temp = pData[j];
    pData[j] = pData[j+1];
    pData[j+1] = temp;
          }
       }
 }
}

void  SelectSort(int *pData,int num)   //选择排序
{
 int i=0,j=0;
 int temp = 0;
 for (i=0;i<num;i++)
 {
  for (j=i+1;j<num;j++)
  {
   if (pData[i]>pData[j])
   {
    temp = pData[i];
    pData[i] = pData[j];
    pData[j] = temp;
   }
  }
 }
}

 

void main()
{
 int a[] = {22,84,21,24,15,27,68,25,20};
//  QuickSort(a,0,8);
// InsertSort(a,9);
// BinInsertSort(a,9);
//  BubbleSort(a,9);
    SelectSort(a,9);


 for (int k = 0;k<9;k++ )
 {
  printf("%d  ",a[k]);
 }

 printf("/n");
}

原创粉丝点击