归并排序
来源:互联网 发布:纳斯卡线条 知乎 编辑:程序博客网 时间:2024/05/17 23:47
简单的归并排序代码,C实现
#include<stdio.h>#include<stdlib.h>//conquervoid merge(int *A, int left ,int mid, int right){ int i; int j; int Tl[8]; int Tr[8]; int lnum; int rnum; lnum = mid-left+1; rnum = right - mid; //assinment for(i =0;i<lnum;i++) Tl[i]=A[left+i]; for(j =0;j<rnum;j++) Tr[j] = A[mid+j+1]; i = 0; j =0; //assignment the smaller num to sequence-array; //and if one temp array(Tr or Tl) is over, //transport the rest num of another array to sequence-array while(i<(lnum)&&j<(rnum)) { if(Tl[i]<Tr[j]) A[left++] = Tl[i++]; else A[left++] = Tr[j++]; } while(i<(lnum)) { A[left++] = Tl[i++]; } while(j<(rnum)) { A[left++] = Tr[j++]; }}//dividevoid merge_sort(int *A,int left,int right) { int mid; if(left<right) { mid = (left+right)/2; merge_sort(A,left,mid); merge_sort(A,mid+1,right); merge(A,left,mid,right); } }int main(){ //test simply int A[8] = {5,4,3,2,1,0,7,6}; //merge sort merge_sort(A,0,7); for(int i=0;i<8;i++) printf("%d",A[i]); system("pause");}
归并排序的思想很简单,但是写成代码还是需要小心一点,有很多小细节需要注意,最好的方式是能够记住一种写法,这样可以提高效率。
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 浅谈JAVA设计模式之——策略模式(Strategy)
- centos install pptpd
- 解决LinearLayout中控件不能居右对齐
- java web 项目 转 maven java web 项目(旧项目 转maven)遇到的问题
- php常用函数总结-----日期
- 归并排序
- LinearLayout中的控件两端对齐
- Ajax请求Controller跳转
- linux如何查进程、杀进程,重启进程
- 创建android的项目
- windows平台使用Qt5进行ffmpeg开发 - ffmpeg库的导入相关问题
- Linux操作系统基本命令
- Reverse Bits
- 美式治愈系厨房