关闭

各种内部排序算法!

574人阅读 评论(0) 收藏 举报

各种内部排序算法!!

 

//排序算法
//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;
}

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:66590次
    • 积分:1159
    • 等级:
    • 排名:千里之外
    • 原创:44篇
    • 转载:5篇
    • 译文:0篇
    • 评论:25条
    文章分类
    最新评论