void SelectSort(int A[],int n)
{
int len = sizeof(A)/sizeof(int);
int startPos = 0;
int endPos = len - 1;
int minPos = 0, maxPos = 0;
int temp = 0;
while (startPos >= endPos)
{
minPos = maxPos = startPos;
//找出startPos到endPos区间内最小值和最大值所在位置
for (int i=startPos;i<=endPos;i++)
{
if (A[i] < A[minPos])
{
minPos = i;
}
else if (A[i] > A[maxPos])
{
maxPos = i;
}
}
//将最小值放到startPos位置
temp = A[minPos];
A[minPos] = A[startPos];
A[startPos] = temp;
//将最大值放到endPos位置
temp = A[minPos];
A[minPos] = A[startPos];
A[startPos] = temp;
//将最大值和最小值从排序区间中移出,进行下一轮排序
startPos++;
endPos--;
}
}
//那叫冒泡排序,用PHP写法是这样的,
function bubbleSort($arr) {
$len = count($arr);
//该层循环控制 需要冒泡的轮数
for ($i = 1; $i < $len; $i++) {
//该层循环用来控制每轮 冒出一个数 需要比较的次数
for ($k = 0; $k < $len - $i; $k++) {
if ($arr[$k] > $arr[$k + 1]) {
$tmp = $arr[$k + 1]; // 声明一个临时变量
$arr[$k + 1] = $arr[$k];
$arr[$k] = $tmp;
}
}
}
return $arr;
}
这里假设0全部放在中间void changeOrder(int A[], int result[], int N) { int lp = 0; int rp = N-1; for(int i=0;i
楼上的回答在进行位置交换的时候还需要加一个判断,避免maxpos=minpos时出错