常見的排序算法

一、冒泡排序

#include<iostream.h>
#include<stdlib.h>
void swap(int &a,int &b)
{
 int temp=a;
 a=b;
 b=temp;
}

void BubbleSort(int arr[],int size)
{
 int i,j;
 for(i=0;i<size-1;i++)
  for(j=0;j<size-1-i;j++)
   if(arr[j]>arr[j+1])
    swap(arr[j],arr[j+1]);
}

int main(void)
{
 int a[5]={5,4,3,2,1};
 BubbleSort(a,5);
 for(int i=0;i<5;i++)
  cout<<a[i]<<'\t';
 cout<<endl;
 system("PAUSE");
}

 

 

二、選擇排序

void SelectionSort(int *arr,int size)
{
 int i,j,min;
 for(i=0;i<size-1;i++)
 {
  min=i;
  for(j=i+1;j<size;j++)
   if(arr[min]>arr[j])
    min=j;
  swap(arr[i],arr[min]);
 }
}

 

三、插入排序

 

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

 

四、希爾排序

void ShellSort(int a[],int len)
{
 int h,i,j,temp;
 for(h=len/2;h>0;h=h/2)
 {
  for(i=h;i<len;i++)
  {
   temp=a[i];
   for(j=i-h;j>=0&&temp<a[j];j-=h)
   {
    a[j+h]=a[j];
   }
   a[j+h]=temp;
  }
 }
}

 

五、快速排序


 

發佈了27 篇原創文章 · 獲贊 10 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章