C++冒泡、插入、选择、希尔、快速排序函数

来源:互联网 发布:mysql 设置编码 utf8 编辑:程序博客网 时间:2024/06/10 18:40

#include  <iostream>
using namespace std;

//输出数组
void show(int a[],int n)
{
  for(int i=0;i<n;i++)
  {
   cout<<a[i]<<"  ";
  }
  cout<<"/n";
}
//交换元素位置:

void swap(int *a,int *b)
{
  int tmp;
  tmp=*a;
  *a=*b;
  *b=tmp;
}
//冒泡排序
void maopao(int a[],int n)
{
  
 int i , j ;
 for(i=1; i <n ; i++)
 {
   for(j=0;j<n-1;j++)
   {
     if(a[i]>a[j])
  {
          swap(&a[i],&a[j]);
  }
   }
 }
}

//插入排序:

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

}
// 选择排序:

void SelectionSort(int a[],int n)
{
  int i , j ,max;   
  for (i = 0; i < n-1; i++)
  {
   max = i;   
    for (j = i+1; j < n; j++)
 {
     if (a[j] >a[max])
  {
  swap(&a[i],&a[j]);
  }
 }
  }

}

//希尔排序:

void xier(int a[],int n)
{
  int i , j , gap=n,flag;
  while(gap>1)
  {
    gap=gap/2;
 
 do{
  flag=0;
    for(i=0;i<=n-gap;i++)
    {
     j=i+gap;
         if(a[i]<a[j])
      {
       swap(&a[i],&a[j]);
         flag=1;
      }    
    }
     
   }while(!flag);
  }
}

//快速排序:
void quicksort(int a[] ,int s , int t)
{
 int i , j , temp;
 if(s<t)
 {
    i=s;
    j=t+1;
    while(1)
    {
      do i++;
      while(!(a[s]>=a[i]||i==t));  
      do j--;
      while(!(a[s]<=a[j])||j==s);
      if(i<j)
      swap(&a[i],&a[j]);
      else
      break;
    }
    swap(&a[s],&a[j]);
    quicksort(a,s,j-1);
    quicksort(a,j+1,t); 
 }
 
}
void  main()
{
  int a[10]={3,2,9,8,6,7,5,1,4};

  cout<<"冒泡排序"<<endl;
  maopao(a,9);
  show(a,9);
 
  cout<<"插入排序"<<endl;
  InsertionSort(a,9);
  show(a,9);
 
  cout<<"选择排序"<<endl;
  SelectionSort(a,9);
  show(a,9);

  //xier(a,9);
  //show(a,9);
  cout<<"快速排序"<<endl;
  quicksort(a,0,8);
  show(a,9);
}

原创粉丝点击