1 冒泡排序
1 #include<stdio.h> 2 int main(){ 3 int n,t; 4 scanf("%d",&n); //n排序总数 5 int arr[n]; 6 for(int i=0;i<n;i++) 7 scanf("%d",&arr[i]); //输入 8 for(int i=0;i<n-1;i++){ //开始排序 9 for(int j=0;j<n-i-1;j++){ 10 if(arr[j]>arr[j+1]){ 11 t=arr[j]; 12 arr[j]=arr[j+1]; 13 arr[j+1]=t; 14 } 15 } 16 } 17 for(int i=0;i<n;i++) 18 printf("%d ",arr[i]); //输出 19 return 0; 20 }
2 选择排序
#include<stdio.h> int main(){ int n,t; scanf("%d",&n); //n排序总数 int arr[n]; for(int i=0;i<n;i++) scanf("%d",&arr[i]); //输入 for(int i=0;i<n;i++){ //开始排序 for(int j=i+1;j<n;j++){ if(arr[i]>arr[j]){ t=arr[i]; arr[i]=arr[j]; arr[j]=t; } } } for(int i=0;i<n;i++) printf("%d ",arr[i]); //输出 return 0; }
3 插入排序
#include<stdio.h> int main(){ int n,t; scanf("%d",&n); //n排序总数 int arr[n]; for(int i=0;i<n;i++) scanf("%d",&arr[i]); //输入 for(int i=0;i<n;i++){ //开始排序 for(int j=i+1;j<n;j++){ if(arr[i]>arr[j]){ t=arr[i]; arr[i]=arr[j]; arr[j]=t; } } } for(int i=0;i<n;i++) printf("%d ",arr[i]); //输出 return 0; }
4 堆排序
5 归并排序
6 快速排序
#include <stdio.h> void swap(int a[], int i, int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } int partition(int a[], int p, int r) { int i = p; int j = r + 1; int x = a[p]; while(1){ while(i<r && a[++i]<x); while(a[--j]>x); if(i>=j) break; swap(a,i,j); } swap(a,p,j); return j; } void quicksort(int a[], int p, int r) { if(p<r){ int q = partition(a,p,r); quicksort(a,p,q-1); quicksort(a,q+1,r); } } int main() { int i; int a[] = {5,13,6,24,2,8,19,27,6,12,1,17}; int N = 12; quicksort(a, 0, N-1); for(i=0; i<N; i++) printf("%d ", a[i]); printf(" "); return 0; }
这个我无良的直接复制过来了。。。
我就先 列出来。。。