📜  c程序编写排列 (1)

📅  最后修改于: 2023-12-03 14:40:27.117000             🧑  作者: Mango

C程序编写排列

在计算机编程中,排列是指将一组元素按照特定的顺序重新排列的方式。在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]) 
                swap(&arr[j], &arr[j+1]); 
} 

其中,arr是需要排序的数组,n是数组元素的个数。swap函数用于交换两个元素的位置。

快速排序

快速排序是一种高效的排序算法。它的思路是将数组分成两个子数组并将小于某个基准值的元素移动到左边,大于基准值的元素移动到右边,然后对子数组递归进行排序。以下是C程序的实现:

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 quickSort(int arr[], int low, int high) 
{ 
    if (low < high) 
    { 
        int pi = partition(arr, low, high); 
        quickSort(arr, low, pi - 1); 
        quickSort(arr, pi + 1, high); 
    } 
} 

其中,arr是需要排序的数组,lowhigh分别为子数组的起始和结束索引。partition函数用于将数组分成两个子数组并将小于某个基准值的元素移动到左边,大于基准值的元素移动到右边。quickSort函数用于递归地对子数组进行排序。

插入排序

插入排序是一种简单的排序算法。它的思路是从第二个元素开始,将每个元素插入到已经排序好的序列中。以下是C程序的实现:

void insertionSort(int arr[], int n) 
{ 
    int i, key, j; 
    for (i = 1; i < n; i++) { 
        key = arr[i]; 
        j = i - 1;
        while (j >= 0 && arr[j] > key) { 
            arr[j + 1] = arr[j]; 
            j = j - 1; 
        } 
        arr[j + 1] = key; 
    } 
} 

其中,arr是需要排序的数组,n是数组元素的个数。

总结

本文介绍了三种C程序编写排列的算法:冒泡排序、快速排序和插入排序。每种算法都有其优缺点,根据实际情况选择合适的算法,可以提高程序效率。在C语言中,写排列程序并不难,关键是理解算法的原理和实现方式。