交换算法

来源:互联网 发布:好看编程图片 编辑:程序博客网 时间:2024/04/30 13:48

交换排序算法的设计与实现(1014)

Time limit(ms): 1000
Memory limit(kb): 10000
Submission: 1314
Accepted: 468
Accepted

编程实现冒泡排序和快速排序算法,按照非递减排序,测试数据为整数。

Description

第一行是待排序数据元素的个数; 第二行是待排序的数据元素。

Input

第一行输出第一趟冒泡排序的结果; 第二行输出第一趟快速排序的结果。

Output
1
2
10
50 36 41 19 23 4 20 18 12 22
Sample Input
1
2
36 41 19 23 4 20 18 12 22 50
22 36 41 19 23 4 20 18 12 50
Sample Output

#include<stdio.h>

#include<stdlib.h>
int *arr,*num;
int main()
{
    void res(int total);
    int total;
    while(scanf("%d",&total)!=EOF)
    {
        res(total);
    }
    return 0;
}
void res(int total)///计算结果
{
    void bubbling(int *arr,int total);
    void quicksort(int *arr,int total);
    void Input(int total);
    Input(total);
    bubbling(arr,total);
    printf("\r\n");
    quicksort(num,total);//第二个排序的时候如果不用另外一个数组将原数组存储起来,操作是在第一次操作完成后的数组之上进行的

    free(arr);
    free(num);
}
void Input(int total)//输入
{
    arr=(int *)malloc(sizeof(int)*total);
    num=(int *)malloc(sizeof(int )*total);
    int i;
    for(i=0;i<total;i++)
        scanf("%d",&arr[i]);
    for(i=0;i<total;i++)
        num[i]=arr[i];
}
void bubbling(int *arr,int total)//一次冒泡
{
    int temp;
    int i;
    for(i=0;i<total-1;i++)
    {
        if(arr[i]>arr[i+1])
        {
            temp=arr[i];
            arr[i]=arr[i+1];
            arr[i+1]=temp;
        }
    }
    for(i=0;i<total;i++)
    {
        if(i==0)
            printf("%d",arr[i]);
        else
        printf(" %d",arr[i]);
    }
}
void quicksort(int *arr,int total)//一次快排
{
    int i=0,j=total-1,key=arr[0];
    if(total>1)
    {
        while(i<j)
        {
            for(;i<j;j--)
            {
                if(key>arr[j])
                {
                    arr[i]=arr[j];
                    i++;
                    break;
                }
            }
            for(;i<j;i++)
            {
                if(key<arr[i])
                {
                    arr[j]=arr[i];
                    j--;
                    break;
                }
            }
        }
        arr[i]=key;
    }
    for(i=0;i<total;i++)
    {
        if(i==0)
            printf("%d",arr[i]);
        else
            printf(" %d",arr[i]);
    }
}
0 0
原创粉丝点击