C语言四种排序算法完整程序

来源:互联网 发布:淘宝内衣不能晒图 编辑:程序博客网 时间:2024/06/05 14:49

C语言四种排序算法完整程序
包含冒泡排序、插入排序、选择排序
主程序设计了菜单可以反复无限次调用查看运行结果
由于使用了随机数列,每次的待排序数列都不一样

#include <stdio.h>#include <stdlib.h>#include <time.h>//产生随机数组void gen_array(int arr[],int n){    int i;    unsigned sr = time(NULL);  //用当前时间做随机数种子    srand(sr);          //初始化随机数    for(i=0;i<n;i++)        arr[i]=1+rand()%100;}void print(int a[],int n){    int i;    for(i=0;i<n;i++)        printf("%6d",a[i]);    printf("\n");}//冒泡排序void BubleSort(int a[],int n){    int i,j,x;    for(i=0;i<n;i++)       {        for(j=1;j<n-i;j++)         {            if(a[j-1]>a[j])             {                x=a[j];                a[j]=a[j-1];                a[j-1]=x;            }        }    }}//快速排序void QuickSort(int a[], int left, int right){    if (left < right)    {        int i = left, j = right, x = a[left];        while (i < j)        {            while(i < j && a[j] >= x) // 从右向左找第一个小于x的数                j--;              if(i < j)                 a[i++] = a[j];            while(i < j && a[i] < x) // 从左向右找第一个大于等于x的数                i++;              if(i < j)                 a[j--] = a[i];        }        a[i] = x;        QuickSort(a, left, i - 1); // 递归调用         QuickSort(a, i + 1, right);    }}//插入排序void InsertSort(int arr[], int n){    int i,j,temp;    for (i = 1; i < n; i++)        {           temp=arr[i];        j=i;        while(j>0 && arr[j-1]>temp)            {                arr[j] = arr[j-1];                j--;            }        arr[j]=temp;    }   }//选择排序void SelectSort(int arr[],int n){    int i,j,k,temp;    for(i=0;i<n;i++)    {        k=i;        for(j=i+1;j<n;j++)        {            if(arr[j]<arr[k]) k = j;        }        if(k>i)        {            temp = arr[i];            arr[i] = arr[k];            arr[k] = temp;        }    }}int main(){    int array[10];    int len = sizeof(array)/sizeof(int);    int ch;    while(1)    {        gen_array(array,len);        printf("Original array:\n");        print(array,len);        printf("Please select sort method:\n");//显示菜单        printf("\t0 exit\n\t1 Buble sort\n\t2 Quick Sort\n\t3 Insertion Sort\n\t4 Selection Sort\nYour choice is>>");        scanf("%d",&ch);        switch(ch)        {        case 0:            return 0;        case 1:            BubleSort(array,len);            printf("Buble sorted array:\n");            print(array,len);            break;        case 2:            QuickSort(array,0,len-1);            printf("Quick sorted array:\n");            print(array,len);            break;        case 3:            InsertSort(array,len);            printf("Insertion sorted array:\n");            print(array,len);        case 4:            SelectSort(array,len);            printf("Selection sorted array:\n");            print(array,len);        default:            break;        }        system("pause");        system("cls");    }}
0 0
原创粉丝点击