c语言怎么排序

C语言中有多种排序算法可以实现对数组或链表的排序,常见的排序算法如下:冒泡排序(Bubble Sort):通过比较相邻的元素,将较大的元素逐步交换到末尾,时间复杂度为O(n^2)。void bubbleSort(int arr[], int n) {for (int i = 0; i < n-1; i++) {for (int j = 0; j < n-i-1; j++) {if (arr[j]

C语言中有多种排序算法可以实现对数组或链表的排序,常见的排序算法如下:

  1. 冒泡排序(Bubble Sort):通过比较相邻的元素,将较大的元素逐步交换到末尾,时间复杂度为O(n^2)。

    void bubbleSort(int arr[], int n) {
        for (int i = 0; i < n-1; i++) {
            for (int 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;
                }
            }
        }
    }
    
  2. 插入排序(Insertion Sort):将数组分为已排序和未排序两部分,每次从未排序部分取一个元素插入到已排序部分的适当位置,时间复杂度为O(n^2)。

    void insertionSort(int arr[], int n) {
        for (int i = 1; i < n; i++) {
            int key = arr[i];
            int j = i - 1;
            while (j >= 0 && arr[j] > key) {
                arr[j+1] = arr[j];
                j--;
            }
            arr[j+1] = key;
        }
    }
    
  3. 选择排序(Selection Sort):每次从未排序部分选择最小(或最大)的元素,将其与未排序部分的第一个元素交换,时间复杂度为O(n^2)。

    void selectionSort(int arr[], int n) {
        for (int i = 0; i < n-1; i++) {
            int minIndex = i;
            for (int j = i+1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            int temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    }
    
  4. 快速排序(Quick Sort):选择一个基准元素,将小于基准的元素移动到基准的左侧,大于基准的元素移动到基准的右侧,然后对左右两部分递归地进行快速排序,时间复杂度为O(nlogn)。

    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; j++) {
            if (arr[j] < pivot) {
                i++;
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
        int temp = arr[i+1];
        arr[i+1] = arr[high];
        arr[high] = temp;
        return i+1;
    }
    
  5. 归并排序(Merge Sort):将数组分割成两个子数组,分别对两个子数组进行递归的归并排序,然后将两个有序子数组合并成一个有序数组,时间复杂度为O(nlogn)。

    void mergeSort(int arr[], int left, int right) {
        if (left < right) {
            int mid = (left + right) / 2;
            mergeSort(arr, left, mid);
            mergeSort(arr, mid+1, right);
            merge(arr, left, mid, right);
        }
    }
    
    void merge(int arr[], int left, int mid, int right) {
        int n1 = mid - left + 1;
        int n2 = right - mid;
        int L[n1], R[n2];
        for (int i = 0; i < n1; i++) {
            L[i] = arr[left + i];
        }
        for (int j = 0; j < n2; j++) {
            R[j] = arr

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/820613.html

(0)
派派
上一篇 2024-01-14
下一篇 2024-01-14

相关推荐

  • 「促销怎么群发短信」群发促销信息内容

    促销怎么群发短信,群发促销信息内容内容导航:怎样用群发短信做广告家电商城搞促销的群发短信如何编辑请问怎么群发短信呀怎么用电脑群发短信一、怎样用群发短信做广告要想做好短信群发,达到广告的效果,需要找到一家靠谱的短信群发平台。用群发短信做广告要注

    2022-05-04
    0
  • 「独立ip是什么」独立ip是什么意思

    独立ip是什么,独立ip是什么意思 内容导航: 网站独立IP是什么怎么理解独立ip 独立IP和IP地址是同一概念吗两者有什么区别 什么是独立IP 共享IP和独立IP和搜索隐情有关系…

    2022-08-07
    0
  • ubuntu扩展磁盘空间后进不去怎么办

    如果你在扩展Ubuntu系统的磁盘空间后无法进入系统,可能是由于操作不当导致系统无法引导或文件系统损坏。以下是一些可能的解决方案:使用Live CD或Live USB启动Ubuntu系统。在启动时选择从Live CD或Live USB启动,并进入Live环境。检查磁盘分区表和文件系统情况。使用命令sudo fdisk -l查看磁盘分区情况,使用sudo fsck /dev/sdXX检查和修复文件系

    2024-02-28
    0
  • PHP的array_key_last()函数怎么使用

    array_key_last()函数是PHP 7.3.0版本新增的一个函数,用于返回数组中最后一个键名。使用该函数的语法如下:array_key_last(array $array): mixed其中,$array是要操作的数组。下面是一个使用array_key_last()函数的例子:$array = ['a' => 1, 'b' => 2, &#

    2024-02-04
    0
  • 做优化推广的4个手段(怎么做优化推广)

    过去的传统营销销售已经不再具有太大的动力了,而现在的时代都是互联网取代过去的传统人工,网站推广到底怎样做才可以将企业网站在互联网具有很高的品牌度和流量的提升。下面帝佑科技来和大家介绍一下怎样做网络优化推广。一、网站空间一定要稳定从事SEO朋友都知

    2022-01-06
    0
  • 为什么邮箱打开是乱码(为什么发邮件出现乱码)

    为什么邮箱打开是乱码,为什么发邮件出现乱码内容导航:邮件出现乱码怎么办啊163的邮箱为什么有时打开是乱码为什么邮箱会乱码打开邮箱里面是乱码一、邮件出现乱码怎么办啊一般来说,乱码邮件的原因有下面三种:(1)由于发件人所在的国家或地区的编码和中国大陆不一样,比如我国台湾或香港地区一般的E-mail编码是

    2022-04-30
    0

发表回复

登录后才能评论