用快速排序方法对数据进行增序排列(C语言实现)

news/2024/5/19 21:45:24 标签: 数据结构, 快速排序, c语言, 算法

利用快速排序方法的递归调用实现增序排列
(做笔记,便于复习)

#include <stdio.h>

int m,x,i,j;
int h[50];//顺序表最大存储

creatb(int h[])//创建顺序表
{
    printf("input data:\n");
    scanf("%d",&x);
    i=0;
    while(x!=0)
    {
        i++;
        h[i]=x;
        scanf("%d",&x);
    }
}

int parttion(int h[],int low,int high)//一次划分,成两段
{
    x=h[low];//取第一个值为枢轴
    while(low<high)//low=high时退出
    {
        while((low<high)&&(h[high]>=x))//找到high之前的第一个比枢轴x小的
            high--;
        if(low<high)
        {
            h[low]=h[high];//找到high之前的第一个比枢轴x小的新值high赋值给前面low
            low++;//可以不要,后面会有这一步
        }

        while((low<high)&&(h[low]<x))//找到low之后的第一个比枢轴x大的新值
            low++;
        if(low<high)
        {
            h[high]=h[low];//找到low之后的第一个比枢轴x大的新值low赋值给后面high
            high--;//可以不要
        }
    }
    h[low]=x;//将枢轴x赋值给low索引的值并返回
    return low;
}

quicksort(int h[],int low,int high)//递归快速排序
{
    if(low<high)
    {
        j=parttion(h,low,high);//j为一次排序后的枢轴
        quicksort(h,low,j-1);//前段:j-1作为high
        quicksort(h,j+1,high);//后段:j+1作为low
    }
}

outb(int h[])//输出顺序表
{
    for(m=1;m<=i;m++)
        printf("%4d",h[m]);
}

main()
{
    creatb(h);
    printf("排序前:\t");
    outb(h);
    quicksort(h,1,i);
    printf("\n排序后:\t");
    outb(h);
}

欢迎指正!


http://www.niftyadmin.cn/n/1255211.html

相关文章

研发部门经理管理总结

研发领导力画像 一、知识技能 1.知识面广度和深度&#xff08;业务方面、研发专业方面&#xff09; 2.沟通能力、汇报能力、问题分析能力 3.产品策划、架构推广能力 4.识人、用人、育人 5.文档编写能力 6.懂得如何给别人施压。不能当老好人。 二、经验阅历 1.从事研发经验 2.项…

python笔试题目_【Python】【面试必看】Python笔试题

前言 现在面试测试岗位&#xff0c;一般会要求熟悉一门语言&#xff08;python/java&#xff09;&#xff0c;为了考验求职者的基本功&#xff0c;一般会出 2 个笔试题&#xff0c;这些题目一般不难&#xff0c;主要考察基本功。要是给你一台电脑&#xff0c;在编辑器里面边写边…

计算机网络基础重点整理

第一章 概述 计算机网络 计算机网络主要是由一些通用的&#xff0c;可编程的硬件互连而成&#xff0c;而这些硬件并非专门用来实现某一特定的目的。 计算机提供的服务 连通性和共享 分组转发 将报文分组&#xff0c;加上首部&#xff0c;经路由器存储转发&#xff0c;在目的地合…

生产者和消费者模型

一.锁机制 1.普通锁 import threading,random,time gMoney1000 gTotalTimes10 gTtimes0 gLockthreading.Lock()class Producer(threading.Thread):def run(self):global gMoneyglobal gTtimeswhile True:moneyrandom.randint(100,1000)gLock.acquire()if gTtimes>gTotalTime…

python跟php_python和php对比

对php比较熟悉&#xff0c;最近开始学些python&#xff0c;总是搞混&#xff0c;特记录下来&#xff0c;用于熟悉python&#xff1a; 1、python数组和php不同&#xff0c;php相对简单统一&#xff0c;即array(包括普通数组和关联数组两部分)&#xff0c;python可分为列表[],元组…

小米官网导航栏的实现

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>小米商品导航</title><style>.box{widt…

面试题:连续子数组最大和

题目描述&#xff1a;例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组&#xff0c;返回它的最大连续子序列的和 最简单&#xff1a;动态规划法 public class Solution {public int FindGreatestSumOfSubArray(int[] array) {if(arrayn…

rlock python_Python RLock类别| release()方法与示例

rlock pythonPython RLock.release()方法 (Python RLock.release() Method) release() is an inbuilt method of the RLock class of the threading module in Python. release()是Python中线程模块的RLock类的内置方法。 RLock class objects follow reentrancy. A reentrant…