#include <stdio.h>
void exp(int* ch,int len)
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - 1 - j; j++)
{
if ( *(ch + j) < *(ch + j + 1))
{
int temp = *(ch + j);
*(ch + j) = *(ch + j +1);
*(ch + j + 1) = temp;
}
}
}
}
int main()
{
int arr[] = { 2,3,1,6,4,8,5,9,0,7 };
int len = sizeof(arr) / sizeof(arr[0]);
exp(arr,len);
for(int i=0;i<len;i++)
printf("%d ", * (arr + i));
return 0;
}
j < len - 1 - j
改成
j < len - 1 - i
j=i
j < len - 1 - i
for (int i = 0; i < len - 1; i++)
{
for (int j = i; j < len - 1 - i; j++)
{
if ( *(ch + j) < *(ch + j + 1))
{
int temp = *(ch + j);
*(ch + j) = *(ch + j +1);
*(ch + j + 1) = temp;
}
}
}
for (int i = 0; i < len - 1; i++)
{
for (int j = i; j < len - 1 - i; j++)
{
if ( *(ch + j) < *(ch + j + 1))
{
int temp = *(ch + j);
*(ch + j) = *(ch + j +1);
*(ch + j + 1) = temp;
}
}
}
第二个for循环不对,应该是从i当前的位置开始,一直到最后的位置,所以是j=i,长度是len-1-i;可以用笔画画就明白了,如果按照你的,本来换好位置的又还回去了
for (int i = 0; i < len - 1; i++)
{
for (int j = i; j < len - 1 - i; j++)
{
if ( *(ch + j) < *(ch + j + 1))
{
int temp = *(ch + j);
*(ch + j) = *(ch + j +1);
*(ch + j + 1) = temp;
}
}
}