快速排序

xiaoxiao2021-02-27  161

//升序

void qsort(int date[],int l,int r) { if(l==r)//如果 当前数组段只有一个一个数 返回; return; int i=l,j=r;//初始化i,j为当前数组段的左端和右端 int y = date[l];//确定当前 数组段的基点值 while(i<j)//当i==j时表示不能从右边找到比基点小的值 那么就要退出 并在后面进行 基点和i j相遇点 //的值交换 { //两个while顺序很重要 while(i<j&&date[j]>=y)首先从右边找到一个比基点小的 j--; while(i<j&&date[i]<=y)再从左边找到一个比基点大的 i++; if(i<j)//当i j 还没有相遇时进行交换值 { int temp = date[i]; date[i] = date[j]; date[j] = temp; } } date[l] = date[j]; date[j] = y; 把i j相遇点的值与基点值进行交换 并分成两个数组数组段 qsort(date,l,j);// qsort(date,j+1,r); }

表达真是一件难事,,,!

转载请注明原文地址: https://www.6miu.com/read-12933.html

最新回复(0)