黑马程序员技术交流社区

标题: 算法 归并排序和快速排序 [打印本页]

作者: 半世心修    时间: 2015-5-30 09:56
标题: 算法 归并排序和快速排序
归并排序:
  1. void MergeSort(int low,int high)
  2. {
  3.    if(low>=high)   return;//每个子列表中剩下一个元素时停止
  4.    else int mid=(low+high)/2;/*将列表划分成相等的两个子列表,若有奇数个元素,则在左边子列表大于右侧子列表*/
  5.    MergeSort(low,mid);//子列表进一步划分
  6.    MergeSort(mid+1,high);
  7.    int [] B=new int [high-low+1];//新建一个数组,用于存放归并的元素
  8.    for(int i=low,j=mid+1,k=low;i<=mid && j<=high;k++)/*两个子列表进行排序归并,直到两个子列表中的一个结束*/
  9.    {
  10.        if (arr[i]<=arr[j];)
  11. {
  12.     B[k]=arr[i];
  13.     I++;
  14. }
  15. else
  16.     { B[k]=arr[j]; j++; }
  17. }
  18. for(   ;j<=high;j++,k++)//如果第二个子列表中仍然有元素,则追加到新列表
  19.       B[k]=arr[j];
  20.    for(   ;i<=mid;i++,k++)//如果在第一个子列表中仍然有元素,则追加到新列表中
  21.       B[k]=arr[i];
  22.    for(int z=0;z<high-low+1;z++)//将排序的数组B的 所有元素复制到原始数组arr中
  23.       arr[z]=B[z];
  24. }
复制代码

快速排序:(最快的排序算法)
  1. void swap(int a,int b){
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2