各种内部排序算法!

原创 2007年09月22日 15:20:00

各种内部排序算法!!

 

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

 

相关文章推荐

内部排序算法资料(PPT+java代码)

  • 2013年08月14日 16:13
  • 1.11MB
  • 下载

各种排序算法(内部排序)及其实现

本文是基于《数据结构(C语言版)(第二版)》(严蔚敏)其排序章节所做的总结。因此具体解释可以去参考此书。概念什么是排序排序是按关键字的非递减或非递增顺序对一组记录重新进行排列的操作。数学描述: 设...

JAVA内部排序算法汇总

  • 2008年04月02日 17:46
  • 34KB
  • 下载

内部排序算法

  • 2012年07月04日 15:13
  • 218KB
  • 下载

内部排序算法 总结

未完待续。。。 插入类排序 直接插入排序 直接插入排序与打扑克时整理手上的牌非常类似。摸来的第一张牌无须整理,此后每次从桌上的牌(无序区)中摸最上面的1张并插入左手的牌(有序区)中正确的位置上。为了找...

内部排序算法大总结Java版

  • 2012年10月10日 17:12
  • 26KB
  • 下载

内部排序算法

  • 2017年05月10日 08:57
  • 239KB
  • 下载

内部排序算法的 JAVA 实现 - 基础

【冒泡】、【选择】、【插入】、【快排】四种最基础的排序算法.。

内部排序算法分析

  • 2014年06月24日 10:09
  • 580KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:各种内部排序算法!
举报原因:
原因补充:

(最多只允许输入30个字)