C++ Class 宣告

 class Sort{
private:
void Merge(int *arr, int front, int mid, int end);
int Partition(int *arr, int front, int end);
public:
void BubblesSort(int *arr, int size);
void InsertSort(int *arr, int size);
void MergeSort(int *arr, int front, int end);
void QuickSort(int *arr, int front, int end);
};

排序法實現

 int Sort::Partition(int *arr, int front, int end){
int pivot = arr[end];
int i = front;
for(int j = front; j < end; j++){
if(arr[j] < pivot){
swap(arr[j], arr[i]);
i++;
}
}
swap(arr[i], arr[end]);
return i;
} void Sort::QuickSort(int *arr, int front, int end){
if(front < end){
int pivot = Partition(arr, front, end);
QuickSort(arr, front, pivot - );
QuickSort(arr, pivot + , end);
}
} void Sort::BubblesSort(int *arr, int size){
int len = size;
for(int i = ; i < len; i++){
for(int j = i + ; j < len; j++){
if(arr[j] < arr[i])
swap(arr[i], arr[j]);
}
}
} void Sort::InsertSort(int *arr, int size)
{
int len = size;
int insert = ;
for(int i = ; i < len; i++){
insert = arr[i];
for(int j = i - ; j >= ; j--){
if(insert < arr[j])
arr[j + ] = arr[j];
else
break;
}
}
} void Sort::Merge(int *arr, int front, int mid, int end){
int i, j, k;
int n1 = mid - front + ;
int n2 = end - mid;
int LeftSub[n1];
int RightSub[n2]; /* copy array */
for(i = ; i < n1; i++)
LeftSub[i] = arr[front + i];
for(i = ; i < n2; i++)
RightSub[i] = arr[mid + i + ]; i = ; j = ; k = front;
while(i < n1 && j < n2){
if(LeftSub[i] <= RightSub[j]){
arr[k] = LeftSub[i];
i++;
}else{
arr[k] = RightSub[j];
j++;
}
k++;
}
while(i < n1){
arr[k] = LeftSub[i];
i++; k++;
}
while(j < n2){
arr[k] = RightSub[j];
j++; k++;
}
} void Sort::MergeSort(int *arr, int front, int end){
if(front < end){
int mid = (front + end) / ;
MergeSort(arr, front, mid);
MergeSort(arr, mid + , end);
Merge(arr, front, mid, end);
}
} void swap(int *a, int *b){
int temp;
temp = *a;
*a = *b;
*b = temp;
}

最新文章

  1. 《CLR.via.C#第三版》第二部分第13章节 接口 读书笔记(七)
  2. mininet和ryu控制器的连接
  3. 关于 XMLHttpRequest对象的onreadyStateChange方法
  4. Bouncy Castle内存溢出
  5. Fragment +ViewPager
  6. [LeetCode]题解(python):048-Rotate Image
  7. 平衡二叉树(AVL)
  8. mysql 数据库自增id 的总结
  9. 主函数 main WinMain _tmain _tWinMain 的区别
  10. memcache分布式部署的原理分析
  11. EasyUI datagrid 分页Json字符串格式
  12. PC-飞起来!我的Windows XP——五步快速优化Windows XP
  13. Html页面加回滚
  14. Codeforces Round #366 (Div. 2)_C. Thor
  15. Python+Selenium基础篇之1-环境搭建
  16. [SDOI2014]旅行
  17. 339. Nested List Weight Sum
  18. CentOS 网卡自动启动、配置等ifcfg-eth0教程
  19. C#中使用Buffer.BlockCopy()方法将string转换为byte array的方法:
  20. 【Alpha】Daily Scrum Meeting

热门文章

  1. Linux下安装Python2.7
  2. vbs获取html内容
  3. elasticsearch2.x插件之一:marvel(配置)
  4. solr开发 小案例
  5. Python学习笔记_我的参考网址
  6. hadoop搭建好,启动服务后,无法从web界面访问50070
  7. sfidsk创建可启动分区问题
  8. sencha表单入门例子
  9. Luogu 4900 食堂
  10. 验证码测试-demo