排序算法
2014-03-03 20:07
357 查看
排序方法:
冒泡排序:
冒泡排序是所有排序算法中最简单最基本的一种,冒泡排序的思路就是交换交换排序,通过相邻元素的交换来达到排序的目的。
快速排序:
快速排序和冒泡排序类似都是基于交换排序的思想,快速排序对马奥跑排序进行了改进从而提高了效率,时间复杂度为O(nlgn),最坏情况为O(n^2)
链接1链接2原理讲的很清楚
冒泡排序:
冒泡排序是所有排序算法中最简单最基本的一种,冒泡排序的思路就是交换交换排序,通过相邻元素的交换来达到排序的目的。
#include <iostream> #include <ctime> using namespace std; void bubble1(int *arr,int n) { int tmp; for (int i = 0; i < n-1; i++) { for (int j = i;j < n;j++) { if (arr[i]>arr[j]) { tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } } } void bubble2(int *arr,int n) { int tmp; bool flag = true; for (int i = 0; i < n-1; i++) { flag = false; for (int j = i;j < n;j++) { if (arr[i]>arr[j]) { tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; flag = true; } } if (!flag) break; } } void bubble3(int *arr,int n) { int tmp; bool flag = true; for (int i = 0; i < n-1; i++) { flag = false; for (int j = 0;j < n-1-i;j++) { if (arr[j]>arr[j+1]) { tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; flag = true; } } if (!flag) break; } } unsigned int comp(unsigned int a,unsigned int b) { unsigned int temp = 0; if (a > b) { temp = a; a = b; b = temp; } return rand()%((b-a)+1); } int main() { srand(unsigned(time(NULL))); int array[10] = {0}; for (int i = 0;i < 10; i++) { array[i] = comp(1,100); cout<<"The original array["<<i<<"] = "<<array[i]<<" "<<endl; } bubble1(array,10); //bubble2(array,10); //bubble3(array,10); for (int i = 0; i < 10; i++) cout<<"The result of bubble sort array["<<i<<"] = "<<array[i]<<" "<<endl; system("pause"); return 0; }
快速排序:
快速排序和冒泡排序类似都是基于交换排序的思想,快速排序对马奥跑排序进行了改进从而提高了效率,时间复杂度为O(nlgn),最坏情况为O(n^2)
链接1链接2原理讲的很清楚
#include <iostream> #include <ctime> using namespace std; void fastsort1(int p[],int a,int b) { if (a < b) { int i,j,x; i = a; j = b; x = p[i]; while (i < j) { while (i < j&&x <= p[j]) j--; if (i < j) { p[i++] = p[j]; } while (i < j&&x >= p[i]) i++; if (i < j) { p[j--] = p[i]; } } p[i] = x; fastsort1(p,a,i-1); fastsort1(p,i+1,b); } } void fastsort2(int p[],int a,int b) { int i,j,t,element; i = a; j = b; element = p[(a+b)/2]; while (i < j) { while (p[i] < element) {++i;} while(p[j] > element) {--j;} if (i <= j) { t = p[i]; p[i] = p[j]; p[j] = t; ++i; --j; } } if(i == j) {i++;} if (a < j) fastsort2(p,a,j); if (i < b) fastsort2(p,i,b); } unsigned int comp(unsigned int a,unsigned int b) { unsigned int temp = 0; if (a > b) { temp = a; a = b; b = temp; } return rand()%((b-a)+1); } int main() { srand(unsigned(time(NULL))); cout<<"Please enter the total number of the array ! "<<endl; int n; cin>>n; if(n <= 0)return -1; int *array = new int ; memset(array,0,n*sizeof(int)); for (int i = 0;i < n; i++) { array[i] = comp(1,100); cout<<"The original array["<<i<<"] = "<<array[i]<<" "<<endl; } //fastsort1(array,0,n-1); fastsort2(array,0,n-1); for (int i = 0; i < n; i++) cout<<"The result of bubble sort array["<<i<<"] = "<<array[i]<<" "<<endl; system("pause"); return 0; }
相关文章推荐
- ORACLE WITH AS 用法
- 第九章 第一个网站——金融工程研究中心
- 《Java核心技术》复习笔记 - 前言
- 内核对象的体会
- VC中struct结构占用的内存空间数
- python实现简单爬虫功能
- ecshop添加广告位的方法
- [数据结构]二叉树
- 13-14寒假作业3
- oracle--执行计划
- Part 5. Templates and Generic Programming
- JSTL自定义标签一简单的例子
- GridView
- hdu 1002 要用数组计算,错了n次!!!
- 语音识别中的置信度问题
- unicode 的体会
- 使用Latex制作简历
- oracle索引之--count(*)优化
- 【Android】屏幕适配——屏幕规格与分辨率对照表
- SAS学习笔记(七)——关于异常值处理