21xrx.com
2024-11-05 17:34:20 Tuesday
登录
文章检索 我的文章 写文章
经典算法的c语言实现
2023-10-01 13:00:57 深夜i     --     --
经典算法 C语言 实现

经典算法是计算机科学中至关重要的一部分。它们不仅帮助我们解决了许多实际问题,而且还为我们提供了思维的框架,以解决各种计算机科学中的挑战。在这篇文章中,我们将介绍一些经典算法的C语言实现。

一、冒泡排序算法

冒泡排序是一种简单但效率较低的排序算法。它通过反复交换相邻的元素来排序,直到整个数组排序完成。下面是冒泡排序算法的C语言实现代码:


void bubbleSort(int arr[], int n) {

  int i, j;

  for (i = 0; i < n-1; i++) {

    for (j = 0; j < n-i-1; j++) {

      if (arr[j] > arr[j+1]) {

        int temp = arr[j];

        arr[j] = arr[j+1];

        arr[j+1] = temp;

      }

    }

  }

}

二、快速排序算法

快速排序是一种高效的排序算法,它利用了分治的思想。它选择一个元素作为基准,将数组分为两个子数组,其中一个子数组的元素都小于基准,另一个子数组的元素都大于基准。然后递归地对两个子数组进行排序。下面是快速排序算法的C语言实现代码:


void quickSort(int arr[], int low, int high) {

  if (low < high) {

    int pivot = partition(arr, low, high);

    quickSort(arr, low, pivot-1);

    quickSort(arr, pivot+1, high);

  }

}

int partition(int arr[], int low, int high) {

  int pivot = arr[high];

  int i = (low - 1);

  for (int j = low; j <= high- 1; j++)

  {

    if (arr[j] < pivot)

    {

      i++;

      swap(&arr[i], &arr[j]);

    }

  }

  swap(&arr[i + 1], &arr[high]);

  return (i + 1);

}

void swap(int* a, int* b) {

  int t = *a;

  *a = *b;

  *b = t;

}

三、二分查找算法

二分查找算法是一种高效的查找算法,它要求待查找数组必须有序。它将数组从中间分为两部分,然后根据目标值和中间值的比较结果来确定继续查找的方向。下面是二分查找算法的C语言实现代码:


int binarySearch(int arr[], int left, int right, int target) {

  while (left <= right) {

    int mid = left + (right - left) / 2;

    if (arr[mid] == target)

      return mid;

    

    if (arr[mid] < target) {

      left = mid + 1;

    }

    else

      right = mid - 1;

    

  }

  return -1;

}

总结:

本文介绍了冒泡排序、快速排序和二分查找这三个经典算法的C语言实现。这些算法在计算机科学中都是非常重要的,它们帮助我们解决了很多实际问题,并且为我们提供了解决其他问题的思路。熟悉和掌握这些经典算法的实现有助于我们提高自己的编程能力,并更好地理解计算机科学的核心概念。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复