归并排序:
- void MergeSort(int low,int high)
- {
- if(low>=high) return;//每个子列表中剩下一个元素时停止
- else int mid=(low+high)/2;/*将列表划分成相等的两个子列表,若有奇数个元素,则在左边子列表大于右侧子列表*/
- MergeSort(low,mid);//子列表进一步划分
- MergeSort(mid+1,high);
- int [] B=new int [high-low+1];//新建一个数组,用于存放归并的元素
- for(int i=low,j=mid+1,k=low;i<=mid && j<=high;k++)/*两个子列表进行排序归并,直到两个子列表中的一个结束*/
- {
- if (arr[i]<=arr[j];)
- {
- B[k]=arr[i];
- I++;
- }
- else
- { B[k]=arr[j]; j++; }
- }
- for( ;j<=high;j++,k++)//如果第二个子列表中仍然有元素,则追加到新列表
- B[k]=arr[j];
- for( ;i<=mid;i++,k++)//如果在第一个子列表中仍然有元素,则追加到新列表中
- B[k]=arr[i];
- for(int z=0;z<high-low+1;z++)//将排序的数组B的 所有元素复制到原始数组arr中
- arr[z]=B[z];
- }
复制代码
快速排序:(最快的排序算法)
|
|