A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 半世心修 中级黑马   /  2015-5-30 09:56  /  261 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

归并排序:
  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){
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马