排序大综合
来源:互联网 发布:linux入门教程下载 编辑:程序博客网 时间:2024/05/14 09:59
排序大综合
//排序 大综合 测试 我记住了没!!#include <iostream>#include <stdlib.h>#include <string.h>using namespace std;void BubbleSort(int a[], int n){ if(NULL == a || n == 0) { return ; } for(int i = n - 1; i > 0; i--) { for(int j = 0; j < i; j++) { if(a[j] > a[j + 1]) { swap(a[j], a[j+ 1]); } } }}void InsertSort(int a[], int n){ if(NULL == a || n == 0) { return ; } int j; for(int i = 1; i < n; i++) { j = i; while(j > 0 && a[j] < a[j - 1]) { swap(a[j - 1] , a[j]); j--; } }}void Merge(int a[], int l, int mid, int r){ int leftsize = mid - l + 1; int rightsize = r - mid; int *left = new int[leftsize]; int *right = new int[rightsize]; for(int i = 0; i < leftsize; i++) { left[i] = a[l + i]; } for(int i = 0; i < rightsize; i++) { right[i] = a[mid + i + 1]; } int i = 0, j = 0, k = l; while(i < leftsize && j < rightsize) { if(left[i] < right[j]) { a[k++] = left[i++]; } if(left[i] > right[j]) { a[k++] = right[j++]; } } while(i < leftsize) { a[k++] = left[i++]; } while(j < rightsize) { a[k++] = right[j++]; } free(left); free(right);}void MergeSort(int a[], int l, int r){ if(l < r) { int mid = (l + r)/2; MergeSort(a, l, mid) ; MergeSort(a, mid + 1, r); Merge(a, l, mid, r); }}void QuickSort(int a[], int left, int right){ if(left < right) { int i = left, j = right, key = a[left]; while(i < j && a[j] > key) { j--; } if(i < j) { a[i++] = a[j]; } while(i < j && a[i] < key) { i++; } if(i < j) { a[j--] = a[i]; } a[i] = key; QuickSort(a, left, i); QuickSort(a, i + 1, j); }} void ChooseSort(int a[], int n){ int min , index; for(int i = 0; i < n; i++) { min = a[i]; for(int j = i + 1; j < n; j++) { if(a[j] < min) { min = a[j]; index = j; } } swap(a[i], a[index]); }}void ShellSort(int a[], int n){ int d = n; while(d) { d = d/2; for(int i = 0; i < n - d; i++) { if(a[i] > a[i + d]) { swap(a[i], a[i+d]); } } }}void AdjustHeap(int a[], int start, int end){ int value = a[start]; for(int i = 2*start + 1; i <= end; i *= 2) { if(i < end && a[i] > a[i + 1]) { i++; } if(value > a[i]) { a[start] = a[i]; start = i; } else { break; } } a[start] = value;}void HeapSort(int a[], int n){ //建一个大顶堆 for(int i = n/2 -1; i >= 0; i--) { AdjustHeap(a, i, n); } //堆排序 for(int i = n - 1; i > 0; i--) { swap(a[0], a[i]); AdjustHeap(a, 0, i - 1); }}int main(){ int *arr = new int; int n = 0; cin >> n; for(int i = 0; i < n; i++) { cin >> arr[i]; } //BubbleSort(arr, n); //InsertSort(arr, n); //MergeSort(arr, 0, n-1); //QuickSort(arr, 0, n - 1); //ChooseSort(arr, n); //ShellSort(arr, n); //BinaryInsertSort HeapSort(arr, n); for(int i = 0; i < n; i++) { cout << arr[i] << " "; } system("pause"); return 0; }
ps:稳定性可以根据 两个相同的数字相对位置是否会改变来判断
阅读全文
0 0
- 排序大综合
- Java排序之排序大综合
- 寒假第四天--排序--实况球员综合能力大比拼
- SDUT 1563 实况球员综合能力大比拼(排序)
- 排序综合
- 排序综合
- 排序综合
- *排序综合*
- {希尔排序、快速排序、动态数组、单链表、字符串转整型}大综合
- c++ 知识点 大 综合
- CHEAT SHEET 大综合
- Makefile大综合基础知识
- STM32f103zet6,综合大实验。
- C++大综合题完整版
- [I0A]排序算法综合实例
- 综合练习: 九九乘法表和排序
- [综合前置系统] 银行综合大前置解决方案
- objecive-c java EDS加密 大综合
- 【dfs(深搜)模板】
- (十二)服务雪崩-熔断器
- keil ucosiii工程改为 iar工程
- 方法的调用以及用过super.的方式来调用。三种
- 调用activity.finish()和System.exit(0)的区别
- 排序大综合
- Struts2系列_#attr.xxxx
- Java日志级别debug info warn error fatal
- hdu 6048puzzle (逆序对)
- cpu过高排查
- linux vi 方向键
- unity导出安卓apk环境配置
- 金蝶K3系统定制国内销售日报表
- 【Python】【Caffe】二、训练输出可视化《python调用caffe模块》