zoukankan      html  css  js  c++  java
  • C++数组排序

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<windows.h>
     4 
     5 #define SIZE 5 //数组中元素的数量
     6 
     7 void swap(int *p1, int *p2)  //交换数组中的两个元素
     8 {
     9     int temp = *p1;  //创建变量储存元素p1的指针
    10     *p1 = *p2;  //将元素p1的指针改为元素p2的指针
    11     *p2 = temp;  //将元素p2的指针改为之前存储的元素p1的指针
    12 }
    13 
    14 int main()  //程序从这里开始运行
    15 {
    16     int array[SIZE];  //创建一个数组
    17     printf("未排序数组:
    
    ");
    18     for (int i = 0; i < SIZE; i++)  //遍历数组中所有元素
    19     {
    20         array[i] = rand();  //数组中每个元素赋值为一个随机数
    21         printf("%d
    ", array[i]);  //输出还未排序的数组中所有元素
    22     }
    23     printf("
    
    按下任意键开始排序");
    24     getchar();  //等待用户响应
    25     system("cls");  //清除所有输出结果
    26 
    27     int l = -1, u = SIZE - 1;  //定义我们需要寻找最值并排序的初始区间[0,SIZE]为全集
    28     for (l++; l < u; u--)//遍历已排序区间[0,l]∪[u,SIZE]的补集(即遍历未排序区间) 
    29     {//当l >= u时,区间(l,u)为空集,跳出循环 
    30         int max = 0, min = 0;  //创建用于存储最大值下标和最小值下标的变量
    31         for (int i = 0; i <= u; i++)  //遍历数组在未排序区间中的所有元素
    32         {
    33             min = array[min]>array[i] ? i : min;  //寻找数组在未排序区间中最小值的下标
    34             max = array[max]<array[i] ? i : max;  //寻找数组在未排序区间中最大值的下标
    35         }
    36         swap(&array[l], &array[min]);  //交换数组在未排序区间中的最小值与数组在未排序区间左端点的值
    37         swap(&array[u], &array[max]);  //交换数组在未排序区间中的最大值与数组在未排序区间右端点的值
    38         printf("数组正在排序:
    
    ");
    39         for (int i = 0; i < SIZE; i++)
    40         {
    41             printf("%d
    ", array[i]);
    42         }
    43         system("cls");  //清除所有输出结果
    44     }
    45     printf("排序后数组:
    
    ");
    46     for (int i = 0; i < SIZE; i++)  //遍历排序完后数组中所有元素
    47     {
    48         printf("%d
    ", array[i]);  //输出排序后的数组中所有元素
    49     }
    50     getchar();  //等待用户响应(防止程序自动退出)
    51     return 0;
    52 }
  • 相关阅读:
    jvm基本结构和解析
    多态的意思
    java中对象的简单解读
    double类型和int类型的区别
    python 解析xml文件
    win10不能映射Ubuntu共享文件
    Qt程序打包
    Ubuntu boot分区文件误删,系统无法启动,怎么解
    ubuntu Boot空间不够问题“The volume boot has only 5.1MB disk space remaining”
    Ubuntu 分辨率更改 xrandr Failed to get size of gamma for output default
  • 原文地址:https://www.cnblogs.com/Yuuki-/p/10544218.html
Copyright © 2011-2022 走看看