Test
来源:互联网 发布:mac自带词典词库下载 编辑:程序博客网 时间:2024/04/28 01:36
void Quick_Sort(int a[], int left, int right)</span>{int i = left, j = right;do{while (a[i]<a[left])i++;while (a[j]>a[left])j--;if (i<=j)std: swap(a[i++], a[j--]);} while (i<j);if(i<right)Quick_Sort(a, i, right);if(j>left)Quick_Sort(a, left, j);}
高端的桶排序
void BucketSort(int data[], int size) { int max, min, num, pos; int i, j, k; struct barrel *pBarrel; max = min = data[0]; for (i = 1; i < size; i++) { if (data[i] > max) { max = data[i]; } else if (data[i] < min) { min = data[i]; } } num = (max - min + 1) / 10 + 1; pBarrel = (struct barrel*)malloc(sizeof(struct barrel) * num); memset(pBarrel, 0, sizeof(struct barrel) * num); /*将数据放到其对应的桶内*/ for (i = 0; i < size; i++) { k = (data[i] - min + 1) / 10; (pBarrel + k)->node[(pBarrel + k)->count] = data[i]; (pBarrel + k)->count++; } pos = 0; for (i = 0; i < num; i++) { quick_sort((pBarrel+i)->node, 0, (pBarrel+i)->count);//对每个桶中的元素排序 for (j = 0; j < (pBarrel+i)->count; j++) { data[pos++] = (pBarrel+i)->node[j]; } } free(pBarrel); }
合并排序
void MergeSort(int array[], int left, int right){if(right <= left)return;int mid = (left+right)/2;int p1 = left, p2 = mid+1, i = left;int aux[10];MergeSort(array, left, mid);MergeSort(array, mid+1, right);//MergeArrayfor (int k = left; k <= right; k++)aux[k] = array[k];while (p1<=mid || p2<=right)if (p2>right || (p1<=mid && aux[p1]<=aux[p2]))array[i++] = aux[p1++];elsearray[i++] = aux[p2++];}
堆排序:
void CreateHeap(HeapList *H){char ch;int i;//下标从1开始好算ElemType temp;FILE *fp;if ( (fp=fopen("C:\\data.txt", "r")) == NULL){printf("文件无法被打开。!");exit(1);}while( fgetc(fp) ){fscanf(fp, "%d", &H->elem[ ++H->Size ]);if ( !(H->elem[H->Size]) ){H->elem[(H->Size)--] = 0;//结束时、删掉被赋值为'#'的那个结点break;}for (i=H->Size; H->elem[i] < H->elem[i/2]; i/=2){temp = H->elem[i];H->elem[i] = H->elem[i/2];H->elem[i/2] = temp;}}}
void Adjust(HeapList *H){ElemType LastElem, MinElem;int i, j;MinElem = H->elem[1];LastElem = H->elem[H->Size];for (i=1; 2*i <= H->Size; i=j){j = 2*i;//j指向 左右孩子中 小的那个if (j< H->Size && H->elem[j] > H->elem[j+1])j++;//如果LastElem(堆尾)大于较小的那个孩子、 则"此时的 MinElem"上移if (LastElem > H->elem[j]){H->elem[i] = H->elem[j];}else{break;}}H->elem[i] = LastElem;//堆尾放到剩下的那个空洞里H->elem[H->Size--] = MinElem;//堆顶放在 原堆顶的位置、并剪枝}
void Selection_Sort(int array[],int n){for (int i = 0; i < n-1; i++){for (int j = i+1; j < n; j++){if (array[i]>array[j]){std:swap(array[i], array[j]);}}}}
void Shell_Sort(int array[],int n){ int m = n; int x,i,j; int temp; while(1) { m = m / 2; for(x = 0;x < m;x++) { for(i = x+m;i < n;i = i+m) { temp = array[i]; for(j = i-m;j >= 0 && array[j] > temp;j = j-m) { array[j+m] = array[j]; } array[j+m] = temp; } } if(m == 1) { break; } }}
void Binary_Insertion_Sort(int array[],int n){ int i,j; int temp; int left,right,middle; for(i = 0;i < n;i++) { temp = array[i]; left = 0,right = i-1,middle = 0; while(left <= right) { middle = (left + right)/2; if(temp < array[middle]) { right = middle-1; } else { left = middle+1; } } for (j = i-1;j >= left;j–) { array[j+1] = array[j]; } if(left != i) { array[left] = temp; } }}
void Insertion_Sort(int array[],int first,int last){ int i,j,temp; for(i = first+1;i < last;i++) { temp = array[i]; for(j = i-1; (j>=0)&&(array[j]>temp); j--) { array[j+1] = array[j]; } if(j != i-1) { array[j+1] = temp; } }}
void Bubble_Sort(int array[],int n){ int i,j,temp; for(i = 0;i < n-1; i++) { for(j = 0;j < n-1-i; j++) { if(array[j] > array[j+1]) { temp = array[j]; array[j] = array[j+1]; array[j+1] = temp; } } }}
0 0
- test
- test
- test
- test
- test
- test
- test
- Test
- test
- Test
- test
- test
- test
- test
- test
- test
- test
- Test
- gdareqghfdsahfs
- 文章标题
- apache日志分析简介
- 混合两个有序int数组到另一个有序数组并去重
- Android源代码 之 构建 编译源码的环境(Ubuntu篇)
- Test
- 关于Unity发布iOS平台代码混淆问题
- Linux中find常见用法示例
- ajax报错(系统错误: -1072896748)
- Unity3D的坑系列:打包Assetbundle丢失Shader问题(贴图显示不了)
- 机器学习实战——最大熵模型
- UVA - 1616 Caravan Robbers 二分+暴力转换
- vector类基本用法
- ggolot2 画ROC曲线