public void sort(int[] num,int left,int right)
{
int i = left;
int j = right;
int mid = num[(left + right) / 2];
do
{
while ((i < right) & (num[i] < mid)) { i++; }
while ((j > left) & (num[j] > mid)) { j--; }
if (i <= j)
{
int x = num[j];
num[i] = num[j];
num[j] = x;
i++; j--;
}
}
while (i <= j);
if(left<j)sort(num, left, j);
if(i<right)sort(num, i, right);
} int[] num = { 5,89,68,23,65,28,19};//被排序的数组
sort(num, 0, 6);//调用函数结果是5 19 23 19 19 28 19
{
int i = left;
int j = right;
int mid = num[(left + right) / 2];
do
{
while ((i < right) & (num[i] < mid)) { i++; }
while ((j > left) & (num[j] > mid)) { j--; }
if (i <= j)
{
int x = num[j];
num[i] = num[j];
num[j] = x;
i++; j--;
}
}
while (i <= j);
if(left<j)sort(num, left, j);
if(i<right)sort(num, i, right);
} int[] num = { 5,89,68,23,65,28,19};//被排序的数组
sort(num, 0, 6);//调用函数结果是5 19 23 19 19 28 19
把思路搞清楚很好排序的
int x = num[j];
num[i] = num[j];
num[j] = x;
i++; j--; 这里面错了吧?
应该是
int x = num[i];
试试
public void sort(int[] num, int left, int right)
{
int i = left;
int j = right;
int mid = num[(left + right) / 2];
do
{
while ((i < right) & (num[i] < mid)) { i++; }
while ((j > left) & (num[j] > mid)) { j--; }
if (i <= j)
{
int x = num[j];
num[j] = num[i];
num[i] = x;
i++; j--;
}
}
while (i <= j);
if (left < j) sort(num, left, j);
if (i < right) sort(num, i, right);
}