排序
bxyill
这个作者很懒,什么都没留下…
展开
-
【基础排序】地精排序
#include #include using namespace std;void bxy(int *a,int n){ int i=-1; while(i<n) { //有交换,则-1 if(i>=0 && a[i]>a[i+1]) { swap(a[i],a[i+1]); i--; } //无交换,则+1 else { i+转载 2012-08-30 10:02:18 · 933 阅读 · 0 评论 -
【基础排序】折半插入排序
#include using namespace std;void Bin_sort(int a[],int n){ for(int i=1; i<=n; ++i) { if(a[i] < a[i-1]) { int temp = a[i]; //折半查找 int low = 0; int high = i-1; while(low <= high转载 2012-08-14 08:34:25 · 404 阅读 · 0 评论 -
【基础排序】快速排序
#include using namespace std;void QuickSort(int a[],int low,int high){ int i=low; int j=high; int temp=a[low]; while(low < high) { while(low=temp) { high--; } swap(a[high],a[low]);转载 2012-08-15 09:17:16 · 441 阅读 · 0 评论 -
【基础排序】计数排序-简洁版
#include #include #include using namespace std;void Sort(int A[], int n){ assert(n > 0); int max = A[0]; for(int i=0; i<n; ++i) { if(max < A[i]) { max = A[i]; } } int *C =转载 2012-08-23 09:22:10 · 398 阅读 · 0 评论 -
【基础排序】奇偶排序
奇偶排序,或奇偶换位排序,或砖排序,是一种相对简单的排序算法,最初发明用于有本地互连的并行计算。这是与冒泡排序特点类似的一种比较排序。 该算法中,通过比较数组中相邻的(奇-偶)位置数字对,如果该奇偶对是错误的顺序(第一个大于第二个),则交换。下一步重复该操作,但针对所有的(偶-奇)位置数字对。如此交替进行下去。 在并行计算排序中,每个处理器对应处理一个值,并仅有与左右邻居的本地互连转载 2012-08-30 09:32:01 · 1058 阅读 · 0 评论 -
冒泡排序小盖饭
//冒泡排序的小改进//设置个信号量change//当某一次没有交换时表明当前数组已有序#include #include using namespace std;void bubbleSort(int a[], int n){ bool change = true; for(int i=n-1; i>=1 && change; --i) { change = false转载 2012-04-24 18:48:17 · 529 阅读 · 0 评论 -
【基础排序】直接插入排序
#include using namespace std;void Insert_sort(int a[],int n){ for(int i=1;i <= n; i++) { if(a[i] < a[i-1]) { int temp = a[i]; for(int j=i-1; a[j]>temp; j--) { a[j+1] = a[j]; }转载 2012-08-13 09:06:32 · 364 阅读 · 0 评论 -
【基础排序】选择排序
#include using namespace std;void SelectionSort(int a[],int n){ for(int i=0; i<n-1; ++i) { int k=i; for(int j=i+1; j<n; j++) { if(a[k]>a[j]) { k=j; } } if(k!=i) { swa转载 2012-08-15 09:00:23 · 420 阅读 · 0 评论 -
【基础排序】冒泡排序
#include using namespace std;void BubbleSort(int a[],int n){ int i; bool change = true; while(change) { change = false; for(i=0; i<n-1 ; i++) { if(a[i]>a[i+1]) { change = true;转载 2012-08-15 09:27:08 · 444 阅读 · 0 评论 -
【基础排序】双向冒泡排序
#include using namespace std;//双向冒泡排序//鸡尾酒排序void CocktailSort(int a[],int n){ int i; int left=0; int right=n-1; bool change=true; while(change) { change=false; for(i=left;i<right;i++)转载 2012-08-15 09:44:32 · 639 阅读 · 0 评论 -
【基础排序】堆排序
/*堆排序(大顶堆)*/ //建立一个大顶堆后,在调整成小顶堆,然后输出#include #includeusing namespace std;//调整堆//调整以当前节点为父节点的所有子节点和孙子节点。。。void HeapAdjust(int *a,int i,int size) { int lchild=2*i; //i的左孩子节点序号转载 2012-08-17 09:49:31 · 587 阅读 · 0 评论 -
【基础排序】希尔排序
#include #include #include #include using namespace std;void Shell_Sort(int a[], int n) { int h,i,j,temp; for (h=n/2; h>0; h=h/2) { for (i=h; i<n; i++)转载 2012-08-22 08:25:29 · 373 阅读 · 0 评论 -
【基础排序】计数排序
//计数排序//适用于维数小,但记录数庞大的数据集的排序任务//维数小是为了让辅助数组小,使用的额外空间就小了。//时间复杂度为O(n)//空间复杂度就是辅助数组的长度,也就是维数max(a[i])+1的一个数组//比如:100万学生的成绩,成绩范围为0到720分。非常适合这种排序算法#include #include #include using namespace std转载 2012-08-23 09:20:57 · 538 阅读 · 0 评论 -
【基础排序】梳排序
梳排序(Comb sort)是一种不稳定排序算法,改良自泡沫排序和快速排序,其要旨在于消除乌龟,亦即在阵列尾部的小数值,这些数值是造成泡沫排序缓慢的主因。相对地,兔子,亦即在阵列前端的大数值,不影响泡沫排序的效能。在泡沫排序中,只比较阵列中相邻的二项,即比较的二项的间距(Gap)是1,梳排序提出此间距其实可大于1,改自插入排序的希尔排序同样提出相同观点。梳排序中,开始时的间距设定为阵列长度转载 2012-08-28 09:33:50 · 976 阅读 · 0 评论 -
【面试题】冒泡排序&快速排序
#include using namespace std;//改进后的冒泡排序,没有交换则结束战斗!int BubbleSort(int R[] , int n){ //int i, j; int tmp; int exchange; for(int i = 0; i < n-1; ++i) { exchange = 0; for(int j = n-1; j > i;转载 2012-05-11 21:16:46 · 1820 阅读 · 0 评论 -
【基础排序】归并排序
#include #include using namespace std;void merge_bxy(int *a,int low,int mid,int high){ int p; int i=low; int j=mid+1; int k=low; int *temp = new int[high+1]; memset(temp,0,sizeof(int)*(high转载 2012-08-27 08:50:33 · 493 阅读 · 0 评论 -
快速排序----非递归
我们以前写快排都是写递归的。#include#include#include#include#include#include using namespace std;template int partition(vector &vec,int low,int high){ Comparable pivot=vec[low]; //任选元素作为轴,这里选首元素转载 2013-05-23 15:15:54 · 2840 阅读 · 0 评论