如何将数组按某值的差值用冒泡排序算法进行排序?

将数组里的值减去z,再进行排序。

本人小白,是不是将冒泡算法里的 if(r[j].key>r[j+1].key)修改成 if(r[j].key-z>r[j+1].key-z)就ok了?考试急用,谢谢da'shen

/*冒泡排序算法如下:*/
    void BubbleSort(RecordType r[], int length ) {
    n=length; change=TRUE;
    for ( i=1 ; i<= n-1 && change ;++i ) { //n为长度,i为右边已排序元素个数
    change=FALSE;// 当i=n时,下面的循环跳出,change为假上面的循环也跳出了。
    for ( j=1 ; j<= n-i ; ++j) // j为左边未排序元素个数(=n-i),
    if (r[j].key> r[j+1].key ) {
    x= r[j]; r[j]= r[j+1]; r[j+1]= x;
    change=TRUE;
}
}
}

是的,但是不等式两边如果同时减去一个相同的数字,则不需要相减
a > b 成立
那么 a + c > b + c一定成立。
所以结论是代码根本不要修改。