zoukankan      html  css  js  c++  java
  • 7.3交换排序

    7.3.1冒泡排序

    7.3.2快速排序

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 #define N 7
     5 
     6 void print(int *arr, int n);//打印数组
     7 int Partition(int *arr, int i, int j);//做一次划分排序
     8 void QuickSort(int *arr, int low, int high);//对顺序表中的子区间进行快速排序
     9 
    10 void main()
    11 {
    12     int arr[N] = { 5,2,6,8,4,3,7 };
    13 
    14     printf("排序前
    ");
    15     print(arr, N);//打印数组
    16     printf("
    ");
    17     
    18     QuickSort(arr, 0, N - 1);//对顺序表中的子区间进行快速排序
    19 
    20     printf("排序后
    ");
    21     print(arr, N);//打印数组
    22 
    23     system("pause");
    24 }
    25 
    26 void print(int *arr, int n)//打印数组
    27 {
    28     int i;
    29     for (i = 0; i < n; i++)
    30     {
    31         printf("%5d", arr[i]);//等价于*(p+i)
    32     }
    33     printf("
    ");
    34 }
    35 
    36 int Partition(int *arr, int i, int j)//做一次划分排序
    37 {
    38     int x = arr[i];//用区间的第一个记录为基准
    39 
    40     while (i < j)
    41     {
    42         while (i < j && arr[j] >= x)//从j所指位置起向前(左)搜索
    43         {
    44             --j;
    45         }
    46         arr[i] = arr[j];
    47         while (i < j && arr[i] <= x)//从i所指位置起向后(右)搜索
    48         {
    49             ++i;
    50         }
    51         arr[j] = arr[i];
    52     }//终止while循环之后i和j一定是相等的
    53 
    54     arr[i] = x;//基准记录x位于最终排序的位置i上
    55 
    56     return i;
    57 }
    58 
    59 void QuickSort(int *arr, int low, int high)//对顺序表中的子区间进行快速排序
    60 {
    61     int p;
    62     if (low < high)//长度大于1
    63     {
    64         print(arr, N);//打印数组
    65 
    66         p = Partition(arr, low, high);//做一次划分排序
    67         QuickSort(arr, low, p - 1);//对左区间递归排序
    68         QuickSort(arr, p + 1, high);//对右区间递归排序
    69     }
    70 }
  • 相关阅读:
    四,redis6版本的使用部署
    记录篇-浪潮服务器raid卡
    sudo漏洞解决方案--源码转rpm包(spec文件编写)
    关闭 Chrome 浏览器阅读清单功能
    【转译】如何成为一个数据工程师?
    Python 用最小堆获取大量元素 topk 大个元素
    Python 实现二分查找
    Python 排序算法之堆排序,使用 heapq 实现
    Python 排序算法之归并排序
    Python 排序算法之快速排序
  • 原文地址:https://www.cnblogs.com/denggelin/p/5705484.html
Copyright © 2011-2022 走看看