当前位置:首页 > 行业动态 > 正文

c语言选择排序程序怎么写

选择排序是一种简单直观的排序算法,其基本思想是:每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完,选择排序是不稳定的排序方法,下面是一个简单的C语言实现选择排序的程序。

我们需要了解选择排序的基本步骤:

1、遍历整个数组,找到最小值及其索引。

2、将找到的最小值与当前遍历到的元素交换。

3、重复上述步骤,直到整个数组有序。

下面是C语言实现选择排序的代码:

#include <stdio.h>
void selection_sort(int arr[], int n) {
    for (int i = 0; i < n 1; i++) {
        int min_index = i;
        for (int j = i + 1; j < n; j++) {
            if (arr[j] < arr[min_index]) {
                min_index = j;
            }
        }
        if (min_index != i) {
            int temp = arr[i];
            arr[i] = arr[min_index];
            arr[min_index] = temp;
        }
    }
}
int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr) / sizeof(arr[0]);
    selection_sort(arr, n);
    printf("Sorted array is: 
");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("
");
    return 0;
}

程序解析:

1、#include <stdio.h>:引入标准输入输出库,用于输入输出操作。

2、void selection_sort(int arr[], int n):定义一个名为selection_sort的函数,接收一个整型数组和数组长度作为参数,注意,这里传入的是数组首元素的地址,而不是数组本身,函数内部对数组进行的修改会影响到原数组。

3、for (int i = 0; i < n 1; i++):外层循环,遍历整个数组,由于数组已经有序,所以只需要遍历n1次,这里的n是数组的长度。

4、int min_index = i;:初始化最小值的索引为当前遍历到的元素的索引。

5、for (int j = i + 1; j < n; j++):内层循环,从当前遍历到的元素的下一个元素开始遍历,直到数组末尾,这里的目的是找到剩余未排序元素中的最小值。

6、if (arr[j] < arr[min_index]):如果找到一个更小的元素,更新最小值的索引。

7、if (min_index != i):如果最小值的索引发生了变化,说明找到了一个新的最小值,此时需要将最小值与当前遍历到的元素交换。

8、int temp = arr[i]; arr[i] = arr[min_index]; arr[min_index] = temp;:交换两个元素的值,使用一个临时变量temp存储其中一个元素的值,然后分别给两个元素赋值,从而实现交换。

9、main():程序的入口函数,在这里定义了一个待排序的数组,并调用selection_sort函数对其进行排序,输出排序后的数组。

通过以上代码,我们可以实现一个简单的C语言选择排序程序,在实际开发中,我们还可以对选择排序进行优化,例如使用二分查找法代替线性查找法来提高查找最小值的效率。

0