![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
南风~古草
贵州大学软件工程专业大三,学子彦秉成。立志于笃行求是,践行人生信仰的奋斗者!
展开
-
快速排序与插入排序结合(C语言,当划分出来的待排元素较少时,可结合插入排序以加快排序时间)
#include<stdio.h>#include<stdlib.h>#include<time.h>void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp;}void insertSort(int a[],int n){ for(int i=1;i<n;i++){ int j; int temp=a[i]; for(j=i;j-1>=0&&temp<a[.原创 2021-12-23 19:16:01 · 738 阅读 · 0 评论 -
基数排序(时间复杂度为O(D*(m+n))D为趟数)
#include<stdio.h>#include<stdlib.h>#include<math.h>struct Node{ int data; struct Node *next;};void baseSort(int a[],int n,int m,int D){ struct Node **head; head=(struct Node **)malloc(sizeof(struct Node *)*m); for(int i=0;i<.原创 2021-12-16 21:07:07 · 768 阅读 · 0 评论 -
桶排序(时间复杂度为O(m+n))
#include<stdio.h>int main(){ int n=22; int a[n]={9,8,7,6,5,4,3,2,1,9,8,7,6,5,4,3,2,1,6,4,6,4}; int m=10; int tong[m]; for(int i=0;i<m;i++){ tong[i]=0; } for(int i=0;i<n;i++){ tong[a[i]]++; } printf("经过桶排序后:\n"); int i=0; while(.原创 2022-01-03 08:15:00 · 359 阅读 · 0 评论 -
多路归并结合败者树排序(C语言)
#include<stdio.h>#include<stdlib.h>#include<time.h>#include<math.h>void merge(int arr[],int l,int r,int mid){ int ar[r-l+1]; int t,k; for(t=0;t<r-l+1;t++){ ar[t]=arr[t+l]; } int i=l,j=mid+1; for(k=l;k<r+1;k++){ .原创 2021-12-14 22:07:23 · 1309 阅读 · 0 评论 -
冒泡排序法(C语言)
#include<stdio.h>void bubblingSort(int a[],int n){ for(int i=0;i<n-1;i++){ for(int j=0;j<n-1-i;j++){ if(a[j]>a[j+1]){ int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; .原创 2022-01-08 18:45:00 · 221 阅读 · 0 评论 -
选择排序(C语言)
#include<stdio.h>void selectionSort(int a[],int n){ for(int i=0;i<n-1;i++){ int min=i; for(int j=i+1;j<n;j++){ if(a[min]>a[j]){ min=j; } } if(min!=i){ .原创 2021-12-30 16:45:00 · 223 阅读 · 0 评论 -
插入排序算法(C语言)
#include<stdio.h>void insertSort(int a[],int n){ for(int i=1;i<n;i++){ int temp=a[i]; int j; for(j=i;j-1>=0&&temp<a[j-1];j--){ a[j]=a[j-1]; } a[j]=temp; }}int main(){ .原创 2021-12-13 08:15:00 · 205 阅读 · 0 评论 -
堆排序算法(C语言)
#include<stdio.h>void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp;}void shiftDown(int a[],int i,int n){ int temp=a[i]; while(2*i+1<n){ int child=2*i+1; if(child<n-1&&a[child]<a[child+1]){ child++; } if(temp&l.原创 2021-12-09 08:15:00 · 326 阅读 · 0 评论 -
拓扑排序代码实现(C语言,利用栈和邻接表)
#include<stdio.h>#include<stdlib.h>struct stack{ int *data; int top; int maxSize;};struct node{ int index; struct node *next;};struct table{ struct node **body; int tablesize;};int map[6][6]={ 0,1,1,1,0,0, 0,0,0,0,0...原创 2021-12-03 13:36:37 · 995 阅读 · 0 评论 -
利用堆排序思想构造大顶堆(C语言)
#include<stdio.h>#include<stdlib.h>void HeapSort(int a[],int n){/*堆排序核心代码*/ for(int i=(n-1)/2;i>=0;i--){ int j=i; while(2*j+1<n){ int child=2*j+1; if(child<n-1&&a[child]<a[child.原创 2021-11-19 16:27:20 · 780 阅读 · 0 评论 -
C语言实现双路快速排序法
#include<stdio.h>#include<stdlib.h>void swap(int arr[],int i,int j){ int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp;}int quickSort2(int arr[],int l,int r){ int p=rand()%(r-l+1)+l; swap(arr,l,p);/*随机一个位置作为标定点*/ int i=l+.原创 2021-09-20 19:51:26 · 326 阅读 · 0 评论 -
C语言实现归并排序
#include<stdio.h>#include<stdlib.h>void merge(int arr[],int l,int r,int mid){/*进行归并*/ int ar[r-l+1]; int t,k; for(t=0;t<r-l+1;t++){ ar[t]=arr[t+l]; } int i=l,j=mid+1; for(k=l;k<r+1;k++){ if(i>.原创 2021-09-20 19:19:48 · 210 阅读 · 0 评论 -
希尔排序算法,比选择,冒泡,插入排序算法快,在一定数据范围内(如1000000个数据)甚至稍优于归并,快速排序算法(此代码为C语言)
#include<stdio.h>#include<stdlib.h>#include<time.h>void swap(int arr[],int i,int j){ int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp;}void shellSort(int arr[],int n){/*希尔排序*/ int h=n/2; while(h>=1){ for(in.原创 2021-10-20 20:55:39 · 108 阅读 · 0 评论