在C語言中,進行高效運算通常涉及以下幾個方面:
下面是一些具體的例子,展示如何在C語言中進行高效運算:
void quicksort(int arr[], int left, int right) {
if (left < right) {
int pivot = partition(arr, left, right);
quicksort(arr, left, pivot - 1);
quicksort(arr, pivot + 1, right);
}
}
int partition(int arr[], int left, int right) {
int pivot = arr[right];
int i = left - 1;
for (int j = left; j < right; j++) {
if (arr[j] < pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[right]);
return i + 1;
}
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
sqrt
、pow
等。這些函數通常比手寫的計算函數更高效。以下是一個使用sqrt
函數的例子:#include <math.h>
double square_root(double x) {
return sqrt(x);
}
#include <omp.h>
void parallel_sum(int arr[], int n) {
#pragma omp parallel for reduction(+:sum)
for (int i = 0; i < n; i++) {
sum += arr[i];
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int sum = 0;
parallel_sum(arr, n);
printf("Sum = %d\n", sum);
return 0;
}
在這個例子中,#pragma omp parallel for reduction(+:sum)
指令將for
循環并行化,并使用reduction
子句將sum
變量的值累加。