排序

来源:互联网 发布:win7 64位数据库下载 编辑:程序博客网 时间:2024/06/06 03:24


1、冒泡排序

#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <time.h>#define N 10void generate(int *a,int n){int i;for(i = 0; i < n; i++){a[i] = rand()%100+100;}}void print(int *a, int n){int i;for(i = 0; i < n; i++){printf("%d\t",a[i]);}printf("\n");}void change(int *a, int *b){int temp;temp = *a;*a = *b;*b = temp;}void sort(int *a, int n){int i,j;for(i = 0; i < n-1; i++){int k = 0;for(j = 0; j < n-1-i; j++){if(a[j] > a[j+1]){change(&a[j], &a[j+1]);k++;}}if(k == 0)break;}}int main(){int *a = (int *)malloc(sizeof(int)*N);time_t time1;srand((unsigned int)time(&time1));generate(a,N);print(a, N);sort(a, N);print(a, N);system("pause");return 0;}


2、选择排序

#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <time.h>#define N 10void generate(int *a,int n){int i;for(i = 0; i < n; i++){a[i] = rand()%100+100;}}void print(int *a, int n){int i;for(i = 0; i < n; i++){printf("%d\t",a[i]);}printf("\n");}void change(int *a, int *b){int temp;temp = *a;*a = *b;*b = temp;}void sort(int *a, int n){int i,j;int min;for(i = 0; i < n-1; i++){min = a[i];for(j = i+1; j < n; j++){if(a[j] < min){min = a[j];change(&a[i],&a[j]);}}}}int main(){int *a = (int *)malloc(sizeof(int)*N);time_t time1;srand((unsigned int)time(&time1));generate(a,N);print(a, N);sort(a, N);print(a, N);system("pause");return 0;}


3、插入排序

void sort(int *a, int n){int i, j;int temp;for(i = 1; i < n; i++){temp = a[i];j = i-1;while(j >= 0 && a[j] > temp){a[j+1] = a[j];j--;}if(j != i-1){a[j+1] = temp;}}}


4、快速排序

#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <time.h>#define N 10void generate(int *a,int n){int i;for(i = 0; i < n; i++){a[i] = rand()%100+100;}}void print(int *a, int n){int i;for(i = 0; i < n; i++){printf("%d\t",a[i]);}printf("\n");}int partition(int *a, int low, int high){int p = a[low];while(low < high){while(low < high && a[high] >= p){high--;}if(low < high){a[low] = a[high];low++;}while(low < high && a[low] < p){low++;}if(low < high){a[high] = a[low];high--;}}a[low] = p;return low;}void sort(int *a, int low, int high){if(low < high){int p = partition(a, low, high);sort(a, low, p-1);sort(a, p+1, high);}}int main(){int *a = (int *)malloc(sizeof(int)*N);time_t time1;srand((unsigned int)time(&time1));generate(a,N);print(a, N);sort(a, 0, N-1);print(a, N);system("pause");return 0;}

 

0 0
原创粉丝点击