快速排序 C语言 递归调用
递归:要满足两个条件 1.循环部分,2.基准条件。 int partition( int a[], int left, int right ) a []是要从左到右排序的数组,其中left是第一个元素的索引,right是最后一个元素的索引。此函数确定数组中的枢轴,并将所有比pilov少的元素向左移动,而将所有所有元素向右移动。重新定位所有元素后,它将返回枢轴的索引。 其中先比较左边,中间,右边三数的大小关系,在将pivot和right-1两个位置进行交换,从而只需比较left-(righth-1)之间的数, while (1) { /*将序列中比基准小的移到基准左边,大的移到右边*/ while ( a[++Low] < Pivot ) ; while ( a[--High] > Pivot ) ; if ( Low < High ) { temp = a[Low]; a[Low] = a[High]; a[High] = temp; }//Swap( &A[Low], &A[High] ); else break; 这部分代码是关键,主要是实现让两数进行交换,当不满足条件时推出循环,最重要的是要实现返回递归可以实现下去的条件, //Swap( &A[Low], &A[Right-1] ); /* 将基准换到正确的位置 */ if(Low < right-1){ temp = a