MYSQL实现分组排序并取组内第一条数据

在使用phabricator时,有这么一个需求。找出任务实际开始时间(自定义字段),思路就是找出ID最小的那个并用objectPHID分组。思路是找到第一次改变 执行开始情况的记录,那么就要进行分组并找出符合条件的第一条记录。第一种:SELECTr.*FROM(SELECT*FROMmaniphest_transaction whereobjectPHIDin('PHID-TASK-iq5chdco7xnp6ohhvbzt','PHID-TASK-ctmpyikm2l33jlrld2m5') andmetadata='{"customfield:key":"std:maniphest:uisftech:begins-the-situation"}'orderbyiddescLIMIT100)rGROUPBYr.objectPHID 加上limit100,对排序进行固定。因为默认是升序,弊端:只能查出来limit后的数据。第二种:select*frommanip...

C语言实现多线程排序

#include<stdio.h>#include<pthread.h>#include<stdlib.h>#include<string.h>/*声明变量*/intarray_length,file_length;int*array_master;FILE*freader;/*用于从文件读取数据*/int*read_file(char*fname){freader=fopen(fname,"rt");/*只读方式打开文件*/intbufsize=file_length;/*数组规模*/charline[80];intinteger;intindex=0;int*input=(int*)malloc(bufsize*sizeof(int));/*动态分配内存空间*/while(fgets(line,80,freader)!=NULL){sscanf(line,"%d",&integer);/*从字符串line中获得整数(完成字符串到整数的转换)*/input[index]=integer;++index;++array_lengt...
代码星球 代码星球·2020-04-09

选择排序

#include<stdio.h>voidswap(int*a,int*b){inttemp=*a;*a=*b;*b=temp;}intMinKey(int*arr,intlow,inthigh){intmin=low;intkey=arr[low];inti;for(i=low+1;i<high;i++){if(key>arr[i]){key=arr[i];min=i;}}returnmin;}voidselect(int*arr,intn){inti;for(i=0;i<n;i++){intj=MinKey(arr,i,n);if(i!=j){swap(&arr[i],&arr[j]);}}}intmain(){intarray[5]={0,14,53,1,37};select(array,5);inti;for(i=0;i<5;i++){printf("array[%d]=%d",i,array[i]);}return0;} ...
代码星球 代码星球·2020-04-08

文件结构体成员排序

/***fwriteStruct.c***/#include<stdio.h>#include<string.h>structstudent{charname[10];intage;};intmain(){structstudentst[5]={0};inti;for(i=0;i<5;i++){printf("pleaseinputname:");scanf("%s",st[i].name);printf("pleaseinputage:");scanf("%d",&st[i].age);}FILE*p=fopen("./c.txt","w");fwrite(st,sizeof(structstudent),10,p);fclose(p);return0;}/***freadStruct.c***/#include<stdio.h>structstudent{charname[10];intage;};intmain(){structstudentst[5]={0};FILE*p=fopen("./c.txt","rb");inti;f...
代码星球 代码星球·2020-04-08

文件操作(排序

文本文件,每行代表一个整数,范围在0~512之间;要求:对文件排序,不使用堆空间,只使用栈空间。 用srand()和rand()函数生成一定量的随机数/***file.c***/#include<stdio.h>#include<string.h>#include<time.h>constintmaxn=100000;intmain(){srand((unsignedint)time(NULL));inti;FILE*p=fopen("./a.txt","w");for(i=0;i<maxn;i++){fprintf(p,"%d",(int)rand()%513);}fclose(p);return0;}然后排序:/***sort.c***/#include<stdio.h>#include<string.h>#include<time.h>intmain(){inti;FILE*p=fopen("./a.txt","r");intarray[513]={0};while(!feof(p)){cha...
代码星球 代码星球·2020-04-08

10-排序5 PAT Judge (25 分)

TheranklistofPATisgeneratedfromthestatuslist,whichshowsthescoresofthesubmissions.ThistimeyouaresupposedtogeneratetheranklistforPAT.InputSpecification:Eachinputfilecontainsonetestcase.Foreachcase,thefirstlinecontains3positiveintegers, N (≤),thetotalnumberofusers, K (≤),thetotalnumberofproblems,and M (≤),thetotalnumberofsubmissions.Itisthenassumedthattheuserid'sare5-digitnumbersfrom00001to N,andtheproblemid'sarefrom1to K.Thenextlinecontains K&n...
代码星球 代码星球·2020-04-08

10-排序6 Sort with Swap(0, i) (25 分)

Givenanypermutationofthenumbers{0,1,2,..., N−1},itiseasytosorttheminincreasingorder.Butwhatif Swap(0,*) istheONLYoperationthatisallowedtouse?Forexample,tosort{4,0,2,1,3}wemayapplytheswapoperationsinthefollowingway:Swap(0,1)=>{4,1,2,0,3}Swap(0,3)=>{4,1,2,3,0}Swap(0,4)=>{0,1,2,3,4}Nowyouareaskedtofindtheminimumnumberofswapsneedtosortthegivenpermutationofthefirst N nonnegativeintegers.InputSpecification:Eachinputfilecontainsonetestcase,whichgivesapositive&nbs...
代码星球 代码星球·2020-04-08

10-排序4 统计工龄 (20 分)

给定公司N名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。输入格式:输入首先给出正整数N(≤),即员工总人数;随后给出N个整数,即每个员工的工龄,范围在[0,50]。输出格式:按工龄的递增顺序输出每个工龄的员工个数,格式为:“工龄:人数”。每项占一行。如果人数为0则不输出该项。输入样例:8102057252输出样例:0:12:35:27:110:1#include<cstdio>constintmaxn=110;intmain(){inthashTable[maxn]={0};intn;scanf("%d",&n);intage;for(inti=0;i<n;i++){scanf("%d",&age);hashTable[age]++;}for(inti=0;i<maxn;i++){if(hashTable[i]!=0){printf("%d:%d",i,hashTable[i]);}}return0;} ...
代码星球 代码星球·2020-04-08

09-排序3 Insertion or Heap Sort (25 分)

AccordingtoWikipedia:Insertionsort iterates,consumingoneinputelementeachrepetition,andgrowingasortedoutputlist.Eachiteration,insertionsortremovesoneelementfromtheinputdata,findsthelocationitbelongswithinthesortedlist,andinsertsitthere.Itrepeatsuntilnoinputelementsremain.Heapsort dividesitsinputintoasortedandanunsortedregion,andititerativelyshrinkstheunsortedregionbyextractingthelargestelementandmovingthattothesortedregion.itinvolvestheuseofaheapdatastructureratherthanalinear-timesearch...

or='red'>09-排序2 Insert or Merge (25 分)

AccordingtoWikipedia:or='red'>Insertionsort iterates,consumingoneinputelementeachrepetition,andgrowingasortedoutputlist.Eachiteration,insertionsortremovesoneelementfromtheinputdata,findsthelocationitbelongswithinthesortedlist,andinsertsitthere.Itrepeatsuntilnoinputelementsremain.Mergesort worksasfollows:DividetheunsortedlistintoNsublists,eachcontaining1element(alistof1elementisconsideredsorted).Thenrepeatedlymergetwoadjacentsubliststoproducenewsortedsublistsuntilthereisonly1sublistremaining.Now...
代码星球 代码星球·2020-04-08

九大经典算法之基数排序、桶排序

基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。排序过程是将所有待比较数值统一为同样的数位长度,数位较短的数前面补零,然后从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。intgetMax(intarr[],intn){intmx=arr[0];for(inti=1;i<n;i++)if(arr[i]>mx)mx=arr[i];returnmx;}voidcountSort(intarr[],intn,intexp){intoutput[n];inti,count[10]={0};for(i=0;i<n;i++)count[(arr[i]/exp)%10]++;for(i=1;i<10;i++)count[i]+=count[i-1];for(i=n-1;i>=0;i--){output[count[(arr[i]/exp)%10]-1]=arr[i];count[(arr[i]/exp)%10]--;}for(i=0;i<n;i++)arr[i]=o...

九大经典算法之归并排序

归并操作的工作原理如下:第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;第二步:设定两个指针,最初位置分别为两个已经排序序列的起始位置;第三步:比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置;重复步骤3直到某一指针超出序列尾;将另一序列剩下的所有元素直接复制到合并序列尾;//循环实现voidmerge(intarr[],intl,intm,intr){inti,j,k;intn1=m-l+1;intn2=r-m;intL[n1],R[n2];for(i=0;i<n1;i++)L[i]=arr[l+i];for(j=0;j<n2;j++)R[j]=arr[m+1+j];i=0;j=0;k=l;while(i<n1&&j<n2){if(L[i]<=R[j]){arr[k]=L[i];i++;}else{arr[k]=R[j];j++;}k++;}while(i<n1){arr[k]=L[i];i++;k++;}while(j<n2){arr[k]=R[j];j++;k++...

九大经典算法之选择排序、堆排序

原理:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。voidselection_sort(intarr[],intn){for(inti=0;i<n-1;i++){inttemp=a[i];intt=i;for(intj=i+1;j<n;j++){if(a[j]<temp){temp=a[j];t=j;}}a[t]=a[i];a[i]=temp;}}空间效率:O(1)时间效率:最好情况:O(N)       平均情况:O(N^2)             最坏情况:O(N^2)稳定性(相同元素相对位置变化情况):不稳定比较次数与初始状态无关堆排序是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满...

九大经典算法之插入排序、希尔排序

原理:每次选择一个元素,并且将这个元素和整个数组中的所有元素进行比较,然后插入到合适的位置。voidinsertion_sort(intarr[],intn){inti,j;for(i=1;i<n;i++){inttmp=arr[i];for(j=i;j>0&&arr[j-1]>tmp;j--){arr[j]=arr[j-1];}arr[j]=tmp;}}空间效率:O(1)时间效率:最好情况:O(n)       平均情况:O(N^2)             最坏情况:O(N^2)稳定性(相同元素相对位置变化情况):稳定适用性:顺序存储的线性表注:还有个折半插入排序,其原理就是查找插入位置时,从中间开始找起。这个是插入排序的修改版,根据步长由长到短分组,进行排序,直到步长为1为止,属于插入排序的一种。//希尔排序-希尔增量voidshell_sort(i...

09-排序3 Insertion or Heap Sort (25 分)

AccordingtoWikipedia:Insertionsort iterates,consumingoneinputelementeachrepetition,andgrowingasortedoutputlist.Eachiteration,insertionsortremovesoneelementfromtheinputdata,findsthelocationitbelongswithinthesortedlist,andinsertsitthere.Itrepeatsuntilnoinputelementsremain.Heapsort dividesitsinputintoasortedandanunsortedregion,andititerativelyshrinkstheunsortedregionbyextractingthelargestelementandmovingthattothesortedregion.itinvolvestheuseofaheapdatastructureratherthanalinear-timesearch...
首页上一页...4647484950...下一页尾页