先定义一个数组arr[ ]={1,2,3,4,5,6,7,8,9,10};则从小到大需如何遍历了
12345678910
21345678910 此处1和2交换
23145678910 此处3和1交换再和2交换
32145678910
。。。。。。。。。
依次类推可得结论需遍历sz-1次,而内部还需交换sz-1-i次
此处sz为sizeof(arr)/sizeof(arr[0]),sizeof(arr)取整个数组取整首地址得到整个数组字节大小
则源码如下:
#include<stdio.h>
void maopao(int a[],int sz)
{
int i = 0;
for (i = 0; i < sz - 1; i++)
{
int j = 0;
for (j = 0; j < sz - i - 1; j++)
{
if (a[j] < a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
int main()
{
int i = 0;
int arr[] = { 1,2,3,4,5,6,7,8,9,10};
int sz = sizeof(arr) / sizeof(arr[0]);
maopao(arr,sz);
for (i = 0; i < sz; i++)
{
printf("%d", arr[i]);
}
return 0;
}