#include <stdio.h>
int main(int argc, const char * argv[]) {
int arr[10]={40000,122,222,344,4477,55,64,7,899,911};
//求数组的长度
int len = sizeof(arr)/sizeof(int);
printf("--数组排序前--\n");
for (int i=0; i<len; i++) {
printf("%d\t",arr[i]);
}
printf("\n---排序过程进行中---\n");
//定义交换数组的媒介
int temp = 0;
//定义用来存放最大数组元素
int max = 0;
for (int i=0; i<len-1; i++) {
//第 i 次寻找最大数
// 假定每次都是i个数为最大数
int indexNum = 0;
max = arr[0];
printf("第%d次比较,假定最大值:a[0]=%d\n",i+1,arr[0]);
for (int j=i+1; j<len; j++) {
//遍历数组,寻找最大数
if (max<arr[j-i]) {
max = arr[j-i];
//设定交换数组元素下标标志
indexNum = j-i;
}
printf("被比较的元素:");
printf("arr[%d]=%d\t",j-i,arr[j-i]);
}
printf("\n");
//最大值与假定值交换
// if (flag==1)
{
printf("arr[%d]= %d",len-1-i,arr[len-1-i]);
printf("与arr[%d]=%d交换\n",indexNum,arr[indexNum]);
temp = arr[len-1-i];
arr[len-1-i] = arr[indexNum];
arr[indexNum] = temp;
}
printf("筛选最大值:arr[%d]=%d\t",indexNum,arr[len-1-i]);
printf("\n交换后arr[%d]=%d\t",len-1-i,arr[len-1-i]);
printf("与arr[%d]=%d\n",indexNum,arr[indexNum]);
printf("\n\n");
//把下标标志清零
indexNum = 0;
}
printf("\n--数组排序后--\n");
for (int i=0; i<10; i++) {
printf("%d\t",arr[i]);
}
printf("\n");
return 0;
} |
|