排序算法之二:冒泡、插入、希尔、快排
2016-04-15 21:32
423 查看
还是打击太深,面的太水,不然,也不会把这些老黄历再扒出来….
希望多写写能够增加熟练度~~
先到这里~~
希望多写写能够增加熟练度~~
#include <iostream> #include <stdlib.h> #include <stdio.h> using namespace std; //交换 void swap(int* arr, int x, int y) { int tmp = arr[x]; arr[x] = arr[y]; arr[y] = tmp; } //打印 void print(int* arr, int n) { for (int i = 0;i < n;i++) { cout << arr[i] << '\t'; } } //简单的交换排序 非正宗的冒泡排序 void BuddleSort(int* arr, int n) { int i, j; for (i = 0;i < n;i++) { for (j = i + 1;j < n;j++) { if (arr[i] > arr[j]) { swap(arr, i, j); } } } } //正宗的冒泡排序 void BuddleSort1(int * arr, int n) { int i, j; for (i = 0;i < n;i++) { for (j = n - 2;j >= i;j--) { if (arr[j] > arr[j + 1]) swap(arr, j, j + 1); } } } //冒泡排序改进 void BuddleSort2(int * arr, int n) { int i, j; int swap_falg = 1; for (i = 0;i < n && swap_falg;i++) { swap_falg = 0; for (j = n - 2;j >= i;j--) { if (arr[j] > arr[j + 1]) { swap(arr, j, j + 1); swap_falg = 1; } } } } //简单选择排序 void SelectSort(int* arr, int n) { int i, j, min; for (i = 0;i < n;i++) { min = i; for (j = i + 1;j < n;j++) { if (arr[min] > arr[j]) min = j; } if (min != i) { swap(arr, i, min); } } } //直接插入排序 void InsertSort(int* arr, int n) { int i, j; int tmp; for (i = 1;i < n;i++) { if (arr[i] < arr[i - 1]) { tmp = arr[i]; for (j = i - 1;arr[j] > tmp;j--) { arr[j + 1] = arr[j]; } arr[j + 1] = tmp; } } } //希尔排序 void ShellSort(int* arr, int n) { int i, j; int tmp; int increment = n; do { increment = increment / 3 + 1; for (i = increment;i < n;i++) { if (arr[i] < arr[i - increment]) { tmp = arr[i]; for (j = i - increment;j >= 0 && tmp < arr[j];j -= increment) { arr[j + increment] = arr[j]; } arr[j + increment] = tmp; } } } while (increment > 1); } //快速排序 int Partition(int* arr, int low, int high) { int pivokey = arr[low]; int i = 0; while (low < high) { while (low < high && arr[high] >= pivokey) { high--; } swap(arr, low, high); while (low < high && arr[low] <= pivokey) { low++; } swap(arr, low, high); } return low; } void QuickSort(int* arr, int low, int high) { int pivot; if (low < high) { pivot = Partition(arr, low, high); QuickSort(arr, low, pivot - 1); QuickSort(arr, pivot + 1, high); } }
先到这里~~
相关文章推荐
- 小需求:查询mapping对应的表及字段
- Java作业5
- C#—密度较量拓展
- 119. Pascal's Triangle II
- mysql FIND_IN_SET的使用
- POJ 2485 Highways
- LeetCode *** 90. Subsets II
- Unity3D-深入剖析NGUI的游戏UI架构
- window10使用命令ssh工具生成github开源中国需要的ssh密钥以及转换为ppk让tortriseGit工具支持它
- PHP 文件打开/读取/读取
- LightOj 1341
- CF 658 D 数学 方程解的个数
- 玩得开心
- 使用junit4测试Spring
- CodeForces 222B Cosmic Tables
- 1.Http的Post与Get区别与联系,实践中如何选择它们?
- CSS3的新属性animation
- POJ 1087 A Plug for UNIX 最大流
- 面试题:删除链表中重复的元素
- 转 必看:手游PVP同步体验总结及实际方案剖析