A_xin_a 2023-03-02 20:40 采纳率: 0%
浏览 22

编写程序完成以下内容

读入一组数据(少于500个),将小于中位数的数据按照从小到大的顺序输出。
论述程序中使用到的排序算法思想

  • 写回答

1条回答 默认 最新

  • 关注

    提供一个C语言版本,使用随机数生成后 自行寻找中位数然后判断,最后通过快速排序 得出结果

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    void swap(int *a, int *b)
    {
    
        int tmp;
        tmp = *a;
        *a = *b;
        *b = tmp;
    }
    
    int partion(int *arr, int len)
    {
        int i, j;
    
        if(len <= 1)
            return 0;
    
        i = 0;
        j = len-1;
        while(i < j)
        {
            //找到右边小于左边值,则退出
            while( arr[i] < arr[j] && i < j) //只要右边比左边大,j可以向左移动
            {
                j--;
            }
    
            swap(&arr[i], &arr[j]);
    
             //找到左边大于右边值,则退出
            while( arr[i] <= arr[j] && i < j)  //只要右边比左边大,i可以向右移动
            {
                i++; 
            }       
            swap(&arr[i], &arr[j]);
        }
        //返回支点
        return i;
    }
    
    
    //快速排序
    void quicksort(int *arr,int len)
    {
        
        if(len <= 1)
            return;
    
        int pivot = partion(arr, len);
    
     //   display(arr, len);
    
        quicksort(arr, pivot);
    
        quicksort(arr+pivot+1, len-pivot-1);
    
    } 
    
    void add(int *arr,int len)
    {   int i=0;
        int j=0;
        int addr[len];
        for(i=0;i<len;i++)
        {
            if((arr[i] > arr[len/2-1] )&&(arr[i]!=arr[len/2-1]))
            {
                addr[j] = arr[i];
                j++;
            }
        }
        quicksort(addr,j);
        printf("\n");
        printf("排序后的数组:");
        for(i=0;i<j;i++)
        {
            printf("%d ",addr[i]);
        }
    }
    
    
    
    int main()
    {   int i=0; 
        int arr[20];
        srand((int)time(0));
        for(i=0;i<20;i++)
        {
            arr[i]=rand()%100+1;
        }
        printf("排序前的数组:");
        for(i=0;i<20;i++)
        {
            printf("%d ",arr[i]);
        }
        add(arr,sizeof(arr)/4);
    }
    
    
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月2日