简单-基础排序

来源:互联网 发布:百度bae数据库 编辑:程序博客网 时间:2024/06/06 05:48

今天写了排序的几种算法。都是最简单的,也是最基础的,下面是代码:

#include <stdio.h>   #include <stdlib.h>   //#include <iostream>   //using namespace std;   int n;  #define Max 200int p[Max];int q[Max];/*void Bubble(int *p,int n) {     int t,j,temp;     for(t=1;t<n;t++){         for(j=0;j<n-t;j++)             if(p[j]>p[j+1]){                 temp=p[j];                 p[j]=p[j+1];                 p[j+1]=temp;             }     } }*/  /*void Insert_sort(int *p,int n){     int i,j,temp;     for(i=1;i<n;i++){         temp=p[i];         for(j=i-1;j>=0;j--)             if(p[j]>temp)                 p[j+1]=p[j];             else                 break;             p[j+1]=temp;     } }*/  /*void Swap(int &x,int &y){     int temp=x;     x=y;     y=temp; } int Partition(int *p,int start,int end) {     int pivot=p[start];     while(start<end){          while(start<end && p[end]>=pivot)              end--;          Swap(p[end],p[start]);          while(start<end && p[start]<=pivot)              start++;          Swap(p[end],p[start]);     }     return start; } void Qsort(int *p,int start,int end) {     if(start<end)     {         int temp=Partition(p,start,end);         Qsort(p,start,temp);         Qsort(p,temp+1,end);     }      }*/  void Merge(int start,int mid,int end)  {      int i=start,j=mid+1,k=start;      while(i<=mid && j<=end){          if(p[i]<=p[j])          q[k++]=p[i++];            else         q[k++]=p[j++];      }      while(i<=mid){          q[k++]=p[i++];    }      while(j<=end){          q[k++]=p[j++];    }      for(i=start;i<=end;i++)p[i]=q[i];}    void merge_sort(int start,int end)  {      if(start<end){          int mid=(start+end)>>1;          merge_sort(start,mid);          merge_sort(mid+1,end);          Merge(start,mid,end);      }    }    int main()  {        while(scanf("%d",&n),n){             int i;          for(i=0;i<n;i++)              scanf("%d",&p[i]);      //Bubble(p,n);       //Insert_sort(p,n);       // Qsort(p,0,n-1);       merge_sort(0,n-1);       //cout << "rlkgrklj" << endl;       for(i=0;i<n;i++)          printf("%d ",p[i]);      }  return 0;  }  


 

原创粉丝点击