各种内部排序算法!

各种内部排序算法!!

 

// 排序算法
// sunboy 2007.9.19
#include  < iostream >
using   namespace  std;
#define  LEN 8
void  Print( int  a[])
{  
    
int i;
    
for(i=0;i<LEN;i++)
        cout
<<a[i]<<" ";
    cout
<<endl;
}

void  swap( int   & a, int   & b)
{
    
int tmp;
    tmp
=a;
    a
=b;
    b
=tmp;
}

int  Partion( int  arr[], int  low, int  high)
{
    
int tmp=arr[low];
    
while(low<high)
    
{
        
while(low<high&&arr[high]>tmp)
            high
--;
        arr[low]
=arr[high];
        
while(low<high&&arr[low]<tmp)
            low
++;
        arr[high]
=arr[low];
    }

    arr[low]
=tmp;
    
    
return low;
}

void  QSort( int  arr[], int  low, int  high)
{int p;
if(low<high)
{
    p
=Partion(arr,low,high);
    QSort(arr,low,p
-1);
    QSort(arr,p
+1,high);
}

}
// 快速排序
void  Insert_Sort( int  arr[])
{
    
int i,j,tmp;
    
for(i=1;i<LEN;i++)
    
{
        
if(arr[i]>=arr[i-1])continue;
        tmp
=arr[i];
        
for(j=i-1;tmp<arr[j]&&j>-1;j--)
            arr[j
+1]=arr[j];
        arr[j
+1]=tmp;
        
    }

}
// 插入排序
int   Min_Select( int  arr[], int  begin)
{
    
int i,flag;
    
int min=0xfffffff;
    
for(i=begin;i<LEN;i++)
        
if(arr[i]<min)
        
{
            min
=arr[i];
            flag
=i;
        }

        
return flag;
}


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

}
// 冒泡排序
void  Select_Sort( int  arr[])
{
   
int i,j;
   
for(i=0;i<LEN-1;i++)
   
{
       j
=Min_Select(arr,i);
       
if(i!=j)
         swap(arr[i],arr[j]);
   }

}
// 选择排序
void  Shell_Sort( int  arr[])
{
    
}

void  Merge ( int  arr[], int  low, int  mid, int  high)
{
    
int i,b[8];
    
int ind1=low;
    
int ind2=mid+1;
    
for(i=low;i<=high;i++)
        b[i]
=arr[i];
    
for(i=low;i<=high&&ind1<=mid&&ind2<=high;i++)
        
if(b[ind1]<b[ind2])
            arr[i]
=b[ind1++];
        
else 
            arr[i]
=b[ind2++];
        
    
while(ind1<=mid)
        arr[i
++]=b[ind1++];
    
while(ind2<=high)
        arr[i
++]=b[ind2++];
        
}

void  Merge_Sort( int  arr[], int  low, int  high)
{
    
int i,brr[8];
    
for(i=0;i<8;i++)
        brr[i]
=arr[i];
    
int mid;
    
if(low<high)
    
{
        mid
=(low+high)/2;
        Merge_Sort(arr,low,mid);
        Merge_Sort(arr,mid
+1,high);
        Merge(arr,low,mid,high);
    }

}
// 归并排序


int  main()
{
    
int arr[8]={2,3,5,6,4,1,0,10};
    
//QSort(arr,0,7);
    
//Insert_Sort(arr);
    
//Bible_Sort(arr);
    
//Select_Sort(arr);
    
//Merge_Sort(arr,0,7);
    Print(arr);
    
return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值