首页 > 其他分享 >快速排序

快速排序

时间:2023-12-02 15:34:46浏览次数:33  
标签:include int 快速 high low Student 排序 data

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
    int NO;
    int Age;
    char Name[50];
}Student;

typedef struct{
    int StudentCount; 
    Student *data;
}Sqlist;

int Partition(Sqlist &L,int low,int high)
{
    Student pivot=L.data[low];
    while(low<high)
    {
        while(low<high&&L.data[high].NO>=pivot.NO)
            high--;
        L.data[low]=L.data[high];
        while(low<high&&L.data[low].NO<=pivot.NO)
            low++;
        L.data[high]=L.data[low];
    }
    L.data[low]=pivot;
    return low;
}

void QuickSort(Sqlist &L,int low,int high)
{
    if(low<high)
    {
        int pivotpos=Partition(L,low,high);
        QuickSort(L,low,pivotpos-1);
        QuickSort(L,pivotpos+1,high);
    }
}

int main()
{
    Sqlist L;
    L.StudentCount=4;
    L.data = (Student *)malloc(L.StudentCount * sizeof(Student));
    L.data[0].Age=20;
    strcpy(L.data[0].Name,"zhangsan");
    L.data[0].NO=1115;
    L.data[1].Age=20;
    strcpy(L.data[1].Name,"lisi");
    L.data[1].NO=1112;
    L.data[2].Age=20;
    strcpy(L.data[2].Name,"wanger");
    L.data[2].NO=1113;
    L.data[3].Age=20;
    strcpy(L.data[3].Name,"mazi");
    L.data[3].NO=1114;
    
    QuickSort(L,0,L.StudentCount-1);
    for (int i = 0; i < L.StudentCount; i++) {
        printf("NO: %d, Age: %d, Name: %s\n", L.data[i].NO, L.data[i].Age, L.data[i].Name);
    }
    return 0;
}

 

标签:include,int,快速,high,low,Student,排序,data
From: https://www.cnblogs.com/simpleset/p/17871664.html

相关文章

  • 选择排序
    #include<stdio.h>#include<stdlib.h>#include<string.h>typedefstruct{intNO;intAge;charName[50];}Student;typedefstruct{intStudentCount;Student*data;}Sqlist;voidSelectSort(Sqlist&L){in......
  • 冒泡排序
    #include<stdio.h>#include<stdlib.h>#include<string.h>typedefstruct{intNO;intAge;charName[50];}Student;typedefstruct{intStudentCount;Student*data;}Sqlist;voidbubbleSort(Sqlist&L){in......
  • 希尔排序
    #include<stdio.h>#include<stdlib.h>voidshellSort(intarr[],intn){intdk,i,j,p;for(dk=n/2;dk>=1;dk=dk/2){for(i=dk+1;i<n;i++){if(arr[i]<arr[i-dk]){p=arr......
  • rust HTTP客户端reqwest快速入门
    这篇文章主要是收集了reqwest一些常用的代码片段,便于以后直接复制使用,对标之前go语言的net/http客户端的快速入门教程。reqwest版本:0.11.22参考依赖配置:[dependencies]reqwest={version="0.11.22",features=["json","multipart"]}tokio={version="1",features=......
  • 几大排序的稳定性
    ​ 八大排序总结:(1)冒泡排序冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,......
  • 折半插入排序
    ACC==1升序,ACC==-1降序#include<stdio.h>#include<stdlib.h>#include<string.h>typedefstruct{intNO;intAge;charName[50];}Student;typedefstruct{intStudentCount;Student*data;}Sqlist;voidBinsersort(Sql......
  • 直接插入排序
    01234528123      从下标1开始遍历,默认第一个元素是已排序序列。例如对元素3进行插入排序:下标0-3分别是2-5-8-12;此时k=arr[4]=3;j=i-1=3;从后往前遍历找到k应该插入的位置当while循环条件 j>=0&&arr[j]>k 一直成立时,arr[j+1]=ar......
  • 《快速入门以太坊》学习记录 —转载
    快速入门以太坊therscan搜索NFT详细信息:https://goerli.etherscan.io/搜索测试链和主链:https://chainlist.org/zhpolygonscan链:https://mumbai.polygonscan.com/铸造NFT:https://thirdweb.com/contracts/new/pre-built/token/nft-collection合约官方标准示例:https://docs......
  • 国标GB28181平台LiteCVR如何快速配置平台国标级联?
    今天我们就来介绍一下LiteCVR如何配置平台级联。具体操作步骤如下:1、平台级联在级联中,LiteCVR既可以作为下级平台,也可以作为上级平台,并支持同时级联多个上级平台。作为上级平台时,下级平台按照设备接入方式,配置LiteCVR的SIP信息即可。作为下级平台时,则要在【配置中心】-【国标级联】......
  • SQL-排序和分组
    1.leftjoin(左联接)返回包括左表中的所有记录和右表中联结字段相等的记录rightjoin(右联接)返回包括右表中的所有记录和左表中联结字段相等的记录innerjoin(等值连接)只返回两个表中联结字段相等的行2.当表格为空时,如何返回null值?网上找到一......