Restudying, basic review (Fast sorting and optimization)
Use of three-value coring and interpolation optimizations
#include <stdio.h> #define Insertsortnumber 10void insertsort (int arra[],unsigned int lowindex,unsigned int Highindex) {printf ("low=%d,high=%d\n", Lowindex,highindex); for (unsigned int i = Lowindex + 1; I <= highindex; ++i) {int T Empvalue = arra[i];unsigned Int j = i;for (; j > Lowindex && tempvalue<arra[j-1];--j) {arra[j]=arra[j-1];} printf ("j=%d,i=%d\n", j,i); if (j!=i) {Arra[j]=tempvalue;}}} int getpivotbymedianofthree (int arra[],unsigned int lowindex,unsigned int highindex) {int medianindex = LowIndex + ( Highindex-lowindex)/2;if (Arra[medianindex]<arra[lowindex]) {int tempvalue = Arra[lowindex]; Arra[lowindex]=arra[medianindex]; Arra[medianindex]=tempvalue;} if (Arra[medianindex]<arra[highindex]) {return arra[medianindex];} else if (Arra[highindex]>arra[lowindex]) {return arra[highindex];} return Arra[lowindex];} unsigned int Partition (int arra[],unsigned int lowindex,unsigned int Highindex,int pivotvalue) {while (1) {while (arra[ Lowindex]<pivotvalue) {lowindex++;} While(Arra[highindex]>pivotvalue) {highindex--;} if (lowindex>highindex) {return lowindex;} int tempvalue = Arra[lowindex]; Arra[lowindex]=arra[highindex]; Arra[highindex]=tempvalue; lowindex++; highindex--;}} void QuickSort (int arra[],unsigned int lowindex,unsigned int highindex) {if (highindex+1)-Lowindex > Insertsortnumbe R) {int pivotvalue = Getpivotbymedianofthree (arra,lowindex,highindex); unsigned int mediancutindex = Partition (Arra, Lowindex,highindex,pivotvalue);p rintf ("pivotvalue=%d,mediancutindex=%d\n", Pivotvalue,mediancutindex); QuickSort (arra,lowindex,mediancutindex-1); QuickSort (Arra,mediancutindex,highindex);} else {insertsort (arra,lowindex,highindex);}} int main () {int arra[] = {1,2,3,50,-5,-7,20,-3,-5,10,13,8,6,4,2,0,-2,-4,-6,-8,18}; int arra[] = {1,2,3,50,-5,-7,20,-3,10,8}; int arra[] = {3,4,6,8,5,1}; QuickSort (arra,0,sizeof (Arra)/sizeof (arra[0])-1);//insertsort (arra,0,sizeof (Arra)/sizeof (arra[0])-1);p rintf ("% D ", arra[0]); for (unsigned int i = 1; i < sizeof (Arra)/sizeOf (arra[0]); ++i) {printf (",%d", Arra[i]);}}
optimization of aggregated repeating elements to be perfected
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Restudying, basic review (Fast sorting and optimization)