`
猫太的鱼
  • 浏览: 233465 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

1007

 
阅读更多

#include <stdio.h>
#include <stdlib.h>



int **measures = NULL;
char **dna = NULL;

int partitions(int **arr, int low, int high)
{
        int *prvotkey = arr[low];
        arr[0] = arr[low];

        while (low < high) {
                while (low < high && arr[high][0] >= prvotkey[0])
                        --high;
                arr[low] = arr[high];
                while (low < high && arr[low][0] <= prvotkey[0])
                        ++low;
                arr[high] = arr[low];
        }

        arr[low] = arr[0];
        return low;
}

void myqsort(int **arr, int low, int high)
{
        int prvotloc;

        if (low < high) {
                prvotloc = partitions(arr,low,high);
                myqsort(arr,low,prvotloc-1);
                myqsort(arr,prvotloc+1,high);
        }
}

void quicksort(int **arr, int n)
{
        myqsort(arr,1,n);
}

/*
int compare(const void *a, const void *b)
{
        return (*(*(int**)a+1) - *(*(int**)b+1));
}
*/

int main(void)
{
        int len, num;
        char *ptr, *cur;
        int i;

        scanf("%d %d",&len,&num);

        if (len <= 0 || len > 50)
                exit(-1);
        if (num <= 0 || num > 100)
                exit(-1);

        dna = (char**)malloc(num * sizeof(char*));
        measures = (int**)malloc((num+1) * sizeof(int*));
        for (i = 0;i < num;i++) {
                dna[i] = (char*)malloc((len+1) * sizeof(char));
                measures[i+1] = (int*)malloc(2 * sizeof(int));
                measures[i+1][1] = i;
                measures[i+1][0] = 0;

                scanf("%s",dna[i]);
                ptr = dna[i];
                while (*ptr != '\0') {
                        cur = ptr + 1;
                        while (*cur != '\0') {
                                if (*cur < *ptr)
                                        ++measures[i+1][0];
                                ++cur;
                        }
                        ++ptr;
                }
        }
        quicksort(measures,num);

        for (i = 0;i < num;i++) {
                printf("%s\n",dna[measures[i+1][1]]);
        }

        return 0;
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics