黑马程序员技术交流社区
标题:
选择排序的两种方法
[打印本页]
作者:
4B青年
时间:
2015-7-5 19:41
标题:
选择排序的两种方法
#include <stdio.h>
//选择排序的第一种方法,跟冒泡排序法有点像,两两交换
void selectSort(int arr[],int len){
//写双重循环
int temp;
for (int i=0; i<len-1; i++) {
for (int j=i+1; j<len; j++) {
//交换的条件
if(arr[i]>arr[j]){
//让arr[i] 和 arr[j] 进行交换
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
//选择排序的第二种方法,只交换一次,因此更高效
void otherSort(int arr[],int len){
//写双重循环
int temp,min;
for (int i=0; i<len; i++) {
//每次假设a[i]是最小值
min = i;
for (int j=i+1; j<len; j++) {
if (arr[j]<arr[min]) {
//找到最小的那个元素的下标
min = j;
}
}
//如果找不到比arr[i]小的数,就不再交换
if (i != min) {
//将第i+1个元素与最小的元素交换
temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
}
int main(int argc, const char * argv[]) {
//定义一个数组
int a[10]={23,12,4,67,20,100,21,45,3,28};
int b[10]={23,12,4,67,20,100,21,45,3,28};
//目的排序
selectSort(a, 10);
otherSort(b, 10);
//遍历输出数组
for (int i=0; i<10; i++) {
printf("%d\t",a[i]);
}
printf("\n");
for (int i=0; i<10; i++) {
printf("%d\t",b[i]);
}
return 0;
}
复制代码
作者:
杨庆庆
时间:
2015-7-5 20:22
赞一下。。。
作者:
小年轻不见了
时间:
2015-7-5 20:38
牛掰!!!!!!!
作者:
弹剑
时间:
2015-7-5 21:31
这个有点意思啊
作者:
pp584995727
时间:
2015-7-6 06:27
不错,顶顶顶
作者:
赵云18235802528
时间:
2015-7-6 07:12
赞赞赞赞赞赞
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2