排序
终把泪酿酒~
艰苦小白的编程之路
展开
-
冒泡排序,选择排序,插入排序
//冒泡排序 #include void swap(int *n, int *m); int main() { int flag; int i, j; int n,a[1000];//n为输入几个数 scanf("%d", &n); for (i = 1; i scanf("%d", &a[i]); flag = 1; for (i = 1; i { flag =原创 2017-04-24 23:06:39 · 186 阅读 · 0 评论 -
归并排序
#include void sorted(int *a,int n,int *b,int m,int *c); int main() { int a[100],b[100],c[100]; int n,m,i; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) scanf("%d",&a[i]);//录入 for(i=1;i<=m;i++) scanf("%d",&b原创 2017-04-27 23:10:56 · 152 阅读 · 0 评论 -
冒泡,选择,插入排序优化,堆排序和qsort的用法
受到宫学长讲座的启发,学到不少的排序方法,所以也想记下来总结一下。所有排序默认都是从大到小排序冒泡排序的优化#include<stdio.h> void swap(int *a,int *b) void bubble1_sort(int *a,int len); void bubble2_sort(int *arr,int n); void bubble3_sort(int *arr,int len原创 2017-07-26 23:24:36 · 302 阅读 · 2 评论 -
计数排序
#include<stdio.h> #include<string.h> int c[11]={0}; void count_sort(int *a,int *b,int len); int main() { int arr[]={1,2,3,4,5,6,7,8,9,10}; int count = sizeof(arr) /sizeof(int);//获取长度 printf原创 2017-10-11 21:25:16 · 139 阅读 · 0 评论 -
期望为线性时间的选择算法(c语言)
#include<stdio.h> #include<stdlib.h> #include<time.h> int RANDOMIZED_SELECT(int a[],int p,int r,int i); int RANDOMIZED_PARTITION(int a[],int p,int r); int PARTITION(int a[],int p,int r); void swap(int原创 2017-10-26 22:52:27 · 2752 阅读 · 3 评论 -
快速排序
#include void QUICK(int *a,int p,int r); int PART(int *a,int p,int r);核心部分,找出中间数 void swap(int *a,int *b);//交换函数 int main() { int arr[100]; int n,i; scanf("%d",&n); for(i=1;i<=n;i++)原创 2017-05-06 17:10:12 · 232 阅读 · 0 评论 -
希尔排序
#include<iostream> #include<vector> using namespace std; void shellsort(vector<int> &arr); int main() { vector<int> arr{0,9,8,7,6,5,4,3,2,1}; shellsort(arr); for(auto i = arr.begin() + 1;i!原创 2018-01-14 21:55:44 · 264 阅读 · 0 评论 -
分治法之归并排序三种实现方法(递归、非递归和自然合并排序)
1. 递归实现归并排序 基本思想: 将待排元素分成大小大致相同的2个子集,分别对2个子集合进行排序,最终将排好序的子集合合并 就会得到一个排好序的集合 即为所求 设归并排序的当前区间是R[low..high],分治法的三个步骤是: ① 分解:将当前区间一分为二,即求分裂点 ② 求解:递归地对两个子区间R[low..mid]和R[mid+1..high] 进行归并排序; ③ ...转载 2018-04-08 19:18:18 · 10476 阅读 · 4 评论