首页 > 其他分享 >C语言快速排序及其优化操作

C语言快速排序及其优化操作

时间:2023-07-27 21:23:34浏览次数:41  
标签:下标 temp int C语言 ++ 数组 排序 优化

快速排序原理简述:找到每一轮最大(最小)的数, 依次从左到右存入新的数组,就完成了降序(升序)的排列。

#include <stdio.h>
int main(void) {
    int n;
    scanf("%d", &n);
    int a[n], temp;
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    for (int i = 0; i < n - 1; i++) {  
//把前面n-1个数拿出来进行排序,最后一个数自然就是最小的了,所以是 i < n - 1 
        for (int j = i + 1; j < n; j++ ) { 
//把上面拿出来的一个数轮流与他后面的数进行比大小 
            if (a[i] < a[j]) {            
  // 如果后面有一个数比他大,则进行交换,始终保持大的数在前面,找出这一轮次下最大的值。 
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
    
    for (int i = 0; i < n; i++) {
        printf("%d ", a[i]);
    }
    return 0;
}

外层循环 按数组下标顺序排列,内层循环 依次给数组下标分配每一轮最大的值 (第一轮是最大的值,由于第一轮最大的值给了下标为0的数组,所以第二轮找到的最大值其实是整个里面第二大的值,第三轮找到的也就是第三大的值。这样就能降序排列了。

优化部分代码如下:

int k;//引入变量k,记录内层循环每一轮找到最大值即其对应的数组下标
    for (int i = 0; i < n - 1; i++) {  
        k = i;
        for (int j = i + 1; j < n; j++ ) { 
            if (a[k] < a[j]) {              
                k = j;
            }
        }
        temp = a[i];
        a[i] = a[k];//把最大值依次从左向右传入
        a[k] = temp;
    }

减少了交换

标签:下标,temp,int,C语言,++,数组,排序,优化
From: https://www.cnblogs.com/doubleriozyt/p/17586083.html

相关文章

  • 2023-07-27:最长可整合子数组的长度, 数组中的数字排序之后,相邻两数的差值是1, 这种数组
    2023-07-27:最长可整合子数组的长度,数组中的数字排序之后,相邻两数的差值是1,这种数组就叫可整合数组。给定一个数组,求最长可整合子数组的长度。答案2023-07-27:算法maxLen的过程如下:1.检查输入数组是否为空,如果为空,则返回0,表示最长可整合子数组长度为0。2.初始化长度为1的最长......
  • Java 对json排序
    Java对JSON排序在日常的开发中,我们经常需要将JSON数据进行排序,以满足业务需求或者提高查询效率。本文将介绍如何使用Java对JSON数据进行排序,并提供示例代码帮助理解。什么是JSON?JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,常用于前后端数据传输。它以......
  • C语言 分支和循环(下)--随机数的生成和猜数字小游戏的实现
    电脑自动生成1~100的随机数玩家猜数字,猜数字过程中,根据猜测数据的大小给出大了或小了的反馈,知道才对,游戏结束一.随机数的生成1.rand原型:这个函数可以帮我们生成随机数在这写void的意思是这个函数不需要参数rand函数会返回一个伪函数,这个随机数的范围实在0~RAND_MAX之间,这个RAND_MAX......
  • Mysql索引优化实战
    Mysql索引优化实战在进行Mysql数据库的查询优化时,索引的优化是至关重要的一环。索引可以大大提高数据库的查询速度,减少查询的资源消耗。本文将介绍Mysql索引的基本原理和常用的索引优化技巧,并提供一些代码示例供读者参考。什么是索引?索引是一种数据结构,可以帮助数据库系统快速定......
  • Kafka 创建的时候只有一个 Topic 的优化
    在kafka的启动配置中修改num.partitions=2每一个配置参考文档https://blog.csdn.net/lizhitao/article/details/25667831python代码在创建的时候,将partion指定为10个###producerfromkafka.adminimportNewTopicfromkafkaimportKafkaProducerfromkaf......
  • C语言中的for循环结构
    C语言中的for循环结构1.1语法形式for循环是三种循环中使用最多的,for循环的语法形式如下:for(表达式1;表达式2;表达式3)语句;//如果循环体想要包含更多语句,需要使用大括号表达式1:用于循环变量的初始化表达式2:用于循环结束条件的判断表达式3:用于循环变量的调整1.2fo......
  • C语言中的while循环结构
    C语言中的while循环结构C语言提供了3中循环语句,while就是其中的一种,接下来就介绍一下while语句。while语句的语法结构和if语句非常相似。1.1if和while的对比if(表达式)语句;while(表达式)语句;//如果循环体想包含更多的语句,可以加上大括号写代码对比下:#includ......
  • C语言中enum类型的全面解析,让你彻底掌握!
    一、枚举类型在实际情况中,有一些变量的取值范围是有限的。打个比方,一周只有七天,一年有十二个月,一个班每星期有六门课程等等。将这些变量定义为整型、字符型或其他类型是不合适的。为此,C语言引入了一种称为“枚举”的类型。在“枚举”类型的定义中,列出了所有可能的取值,而该“枚举......
  • P8859 冒泡排序
    我回来了。参考:https://www.luogu.com.cn/blog/_post/509374、https://www.luogu.com.cn/blog/_post/510710。考虑type1,注意到\(1\)是不能被超越的,且一个数操作多次不优,因此第一步操作\(1\)不劣。因此从小到大归位每个数不劣,答案即为总数减去前缀\(\max\)的数目。从小到......
  • linux查询tcp连接数并排序
    查询已连接[root@rabbitmq-1rabbitmq]#netstat-an|awk'{print$5}'|cut-d:-f1|sort|uniq-c|sort-rn3393172.16.229.2532995172.16.47.212400172.16.229.232186172.16.229.254149172.16.229.240102172.16.229.218这个......