c - 如何提高数组排序效率

标签 c arrays sorting

下面是按升序对数值进行排序的代码,它对于 L 的较低值工作正常,但当 L 的值变为 高达/超过 1,000,000

for(i=0; i<L; i++) {
    for(j=i+1; j<L; j++) {
        if(SARAY[j] < SARAY[i]) { 
                temp = SARAY[i];
            SARAY[i] = SARAY[j];
            SARAY[j] = temp;
        }
    }
}

有人可以建议我改进它吗?

最佳答案

这是一个关于如何使用 qsort 的基本示例,它会快得多。

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

static int int_cmp(const void *a, const void *b) {
  const int *ia = (const int *)a; // casting pointer types
  const int *ib = (const int *)b;
  return (*ia > *ib) - (*ia < *ib);
}

int main(int argc, char *argv[]) {
  int j;

  int numbers[] = { 7, 3, 4, 1, -1, 23, 12, 43, 2, -4, 5 };
  size_t numbers_len = sizeof(numbers)/sizeof(int);

  qsort(numbers, numbers_len, sizeof(int), int_cmp);

  for(j = 0; j < numbers_len; j++) printf("%d\n", numbers[j]);
}

这将以升序打印整数(从最小的数字开始)。

如果你想按降序打印整数(从最大的数字开始),你可以反转循环

for(j = numbers_len-1; j >= 0; j--) printf("%d\n", numbers[j]);

关于c - 如何提高数组排序效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33322314/

相关文章:

c - 如何用 C 语言实现这种外部合并排序算法?

c - 如何在 C 中按日期打印目录中的文件名列表?

c++ - 区间链表

c - union 声明C代码

python - 优化 Python/Numpy 中的数组元素移位

javascript - 如何将数组传递给material-ui dataSource props

遍历列表元素时的 C 问题

python - 如何在 Python 中的不等间距值之间创建等间距值?

python - 如何在 Python 中对 sql 生成的元组数组进行排序

linux - 按列和一般编号对床文件进行排序