随笔

int select(int* arr, int n, int k);

void main()
{
    int i, value;
    int* arr;
    clock_t elapse;
    srand((unsigned)time(NULL));
    arr = (int* )malloc(sizeof(int)* N);
    for(i = 0; i < N; i++)
    {
        arr[i] = rand() % 1000;  //产生的随机数限制在1000之内
        printf("%d ", arr[i]);
    }
    printf("\n");
    elapse = clock();
    value = select(arr, N, N/2);
    elapse = clock() - elapse;
    printf("Value: %d, elapsed: %.4lfs\n", value, (double)elapse/1000);
    system("pause");
}

int select(int* arr, int n, int k)
{
    int i, j, t;
    int* tmp;
    tmp = (int *)malloc(sizeof(int)* k);
    for(i = 0; i < k; i++)       //读入k个元素并升序排列
    {
        tmp[i] = arr[i];
        for(j = i; j > 0; j--)
        {
            if(tmp[j] < tmp[j-1])
            {
                t = tmp[j];
                tmp[j] = tmp[j-1];
                tmp[j-1] = t;
            }
        }
    }
    printf("读入k个元素并升序排列:\n");
    for(i = 0; i < k; i++)
    {
        printf("%d ",tmp[i]);
    }
    printf("\n");
    for(i = k; i<n; i++)          //加入新元素并升序排列
    {
        if(arr[i] > tmp[0])
        {
            tmp[0] = arr[i];
            for(j = 0; j < k-1; j++)
            {
                if(tmp[j] > tmp[j+1])
                {
                    t = tmp[j];
                    tmp[j] = tmp[j+1];
                    tmp[j+1] = t;
                }
            }
        }
    }
    printf("加入新元素并升序排列:\n");
    for(i = 0; i < k; i++)
    {
        printf("%d ",tmp[i]);
    }
    printf("\n");
    return tmp[k-1];
}

  

#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 100 int select(int* arr, int n, int k); void main() { int i, value; int* arr; clock_t elapse; srand((unsigned)time(NULL)); arr = (int* )malloc(sizeof(int)* N); for(i = 0; i < N; i++) { arr[i] = rand() % 1000; //产生的随机数限制在1000之内 printf("%d ", arr[i]); } printf("\n"); elapse = clock(); value = select(arr, N, N/2); elapse = clock() - elapse; printf("Value: %d, elapsed: %.4lfs\n", value, (double)elapse/1000); system("pause"); } int select(int* arr, int n, int k) { int i, j, t; int* tmp; tmp = (int *)malloc(sizeof(int)* k); for(i = 0; i < k; i++) //读入k个元素并升序排列 { tmp[i] = arr[i]; for(j = i; j > 0; j--) { if(tmp[j] < tmp[j-1]) { t = tmp[j]; tmp[j] = tmp[j-1]; tmp[j-1] = t; } } } printf("读入k个元素并升序排列:\n"); for(i = 0; i < k; i++) { printf("%d ",tmp[i]); } printf("\n"); for(i = k; i<n; i++) //加入新元素并升序排列 { if(arr[i] > tmp[0]) { tmp[0] = arr[i]; for(j = 0; j < k-1; j++) { if(tmp[j] > tmp[j+1]) { t = tmp[j]; tmp[j] = tmp[j+1]; tmp[j+1] = t; } } } } printf("加入新元素并升序排列:\n"); for(i = 0; i < k; i++) { printf("%d ",tmp[i]); } printf("\n"); return tmp[k-1]; }

  

posted @ 2017-09-13 11:24  Pesces  阅读(104)  评论(0)    收藏  举报