黑马程序员技术交流社区
标题: 素组排序---选择排序 [打印本页]
作者: 403295277 时间: 2015-9-1 22:10
标题: 素组排序---选择排序
#include <stdio.h>
int main(int argc, const char * argv[]) {
int arr[10]={4,1,222,344,44,55,64,7,899,911};
//求数组的长度
int len = sizeof(arr)/sizeof(int);
printf("--数组排序前--\n");
for (int i=0; i<len; i++) {
printf("%d\t",arr);
}
printf("\n---排序过程进行中---\n");
//定义交换数组的媒介
int temp = 0;
int indexNum = 0;
//定义用来存放最小数组元素
int min = 0;
//设置标志,0标示没有找到应该交换的对象
int flag = 0;
for (int i=0; i<len-1; i++) {
//第 i 次寻找最小数
// 假定每次都是i个数为最小数
min = arr;
printf("第%d次比较,假定最小值:a[%d]=%d\n",i+1,i,arr);
printf("剩余比较的元素:");
for (int j=i+1; j<10; j++) {
//遍历数组,寻找最小数
if (min>arr[j]) {
min = arr[j];
//设定交换数组元素下标标志
indexNum = j;
//设定已经查找到最小数组元素标志(1标示找到最小值)
flag = 1;
}
printf("arr[%d]=%d\t",j,arr[j]);
}
printf("\n");
//最小值与假定值交换
if (flag==1) {
temp = arr;
arr = arr[indexNum];
arr[indexNum] = temp;
}
//复位循环标志
flag = 0;
printf("筛选最小值:arr[%d]=%d\t",i,arr);
printf("\n\n");
//把下标标志清零
indexNum = 0;
}
printf("\n--数组排序后--\n");
for (int i=0; i<10; i++) {
printf("%d\t",arr);
}
printf("\n");
return 0;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |