【算法导论】C++参考源码之基础排序
2013-08-04 20:26
417 查看
开始阅读算法导论知识,数学部分的思路没有深究,只当是了解一些算法的原理以及思路,为的是熟悉算法以及在项目中能够应用到,
没有打算对其进行学术研究,下面贴出对应我所写的C++源码,可以直接在VS2008编译器上运行。
以下代码是是插入排序,合并排序(归并排序),冒泡排序
第一次写,暂时没有发现有BUG,可以进行参考,发现BUG的同学可以在下方评论。
冒泡写错了~~~,我现在修正回来了 ——2013-8-17
没有打算对其进行学术研究,下面贴出对应我所写的C++源码,可以直接在VS2008编译器上运行。
以下代码是是插入排序,合并排序(归并排序),冒泡排序
#include <iostream> using namespace std; void insert_sort(int arry[], int size) { int key; int i; for (int j = 1; j < size; ++j) { key = arry[j]; i = j - 1; while (i > -1 && arry[i] > key) { arry[i+1] = arry[i]; i = i - 1; } arry[i+1] = key; } } void merge(int A[], int p, int q, int r) { int n1 = q - p + 1; int n2 = r - q; int i, j; int L[10]; int R[10]; for (i = 0; i < n1; ++i) { L[i] = A[p + i]; } for (j = 0; j < n2; ++j) { R[j] = A[q + j + 1]; } L[n1] = 0xFFFF; R[n2] = 0xFFFF; i = 0; j = 0; for (int k = p; k <= r; ++k) { if (L[i] <= R[j]) { A[k] = L[i]; ++i; } else { A[k] = R[j]; ++j; } } } void merge_sort(int A[], int p, int r) { if (p < r) { int q = (p + r) / 2; merge_sort(A, p, q); merge_sort(A, q+1, r); merge(A, p, q, r); } } void bubble_sort(int A[], int size) { for (int i = 0; i < size; ++i) { for (int j = size - 1; j > i; --j) { if (A[j] < A[j-1]) { swap(A[j], A[j-1]); } } } } int main() { int arry[] = {5, 2, 4, 6, 1, 3, 7, 9, 8}; //int arry[] = {2, 4, 6, 1, 3, 5}; int size = sizeof(arry) / sizeof(arry[0]); //insert_sort(arry, size); merge_sort(arry, 0, size-1); //bubble_sort(arry, size - 1); for (int i = 0; i < size; ++i) { cout << arry[i] << endl; } return 0; }
第一次写,暂时没有发现有BUG,可以进行参考,发现BUG的同学可以在下方评论。
冒泡写错了~~~,我现在修正回来了 ——2013-8-17
相关文章推荐
- 【算法导论】C++参考源码之堆排序
- 【算法导论】C++参考源码之线性时间排序
- 【算法导论】C++参考源码之队列、二叉树
- 【算法导论】C++参考源码之堆排序中的优先级队列
- 算法与数据结构基础 -- 排序 (C++实现)
- C/C++笔试题-主要考察C/C++语言基础概念、算法及编程,附参考答案,分享给大家
- 七大排序问题之快速排序(参考算法导论PHP版)
- C++基础算法练习之排序比较
- C++——算法基础之排序——希尔排序(已修改)
- C/C++笔试题-主要考察C/C++语言基础概念、算法及编程,附参考答案,分享给大家。
- C++15道基础算法题---(1)合并已排序数组
- 快速排序--(参考算法导论p146)
- C++——算法基础之排序——快速排序
- C++语法基础--泛型算法(generic algorithm)--对容器排序的算法sort(),stable_sort(),unique()
- 算法导论 第8章 线性时间排序 C++实现
- C++——算法基础之排序——选择排序
- Android 算法排序面试——七大基础算法(附源码)
- 【算法导论】C++源码之快速排序
- 排序基础算法总结与c++实现