黑马程序员技术交流社区
标题:
选择排序和冒泡排序
[打印本页]
作者:
罗文强
时间:
2015-12-4 00:02
标题:
选择排序和冒泡排序
#include <stdio.h>//预处理命令:文件包含
void selectSort(int array[], int length);//声明
void bubbleSort(int array[], int length);//声明
int main()
{
int array[] = {12, 8, 4, 11, 5, 20, 1};//定义一个数组并初始化
int length = sizeof(array)/sizeof(int);//数组元素个数
selectSort(array, length);//调用选择排序
bubbleSort(array, length);//调用冒泡排序
return 0;
}
void selectSort(int array[], int length)
{
for (int x = 0; x < length; x++) {//第几轮排序
int tempIndexMax = x;//最大值的下标
for (int y = x+1; y < length; y++) {//当前这轮排序的具体实现
//从大到小排序
// if (array[y] > array[tempIndexMax]) {//array[y]是否大于先前的“最大值”
// tempIndexMax = y;//如果大于先前的“最大值”,改变“最大值”的下标
// }
//从小到大排序
if (array[y] < array[tempIndexMax]) {//array[y]是否小于先前的“最大值”
tempIndexMax = y;//如果小于先前的“最大值”,改变“最大值”的下标
}
}
//把找到的最大值和之前的最大值互换
int temp = array[x];
array[x] = array[tempIndexMax];
array[tempIndexMax] = temp;
}
//遍历数组
for (int z = 0; z < length; z++) {
printf("%d\t", array[z]);
}
printf("\n");
}
void bubbleSort(int array[], int length)
{
for (int x = 0; x < length-1; x++)
{
//每趟排序都会确定一个数,所以需要再循环len-x次,但因为每次都是相邻的两个数进行比较,为了array[y+1]不越界,让j循环到len-1-x时停止。
for (int y = 0; y < length-1-x; y++)
{
//从大到小排序
// if (array[y] < array[y+1])
// {
// int temp = array[y+1];
// array[y+1] = array[y];
// array[y] = temp;
// }
//从小到大排序
if (array[y] > array[y+1])//如果条件满足,交换array[y]和a[y+1]两个相邻数的值
{
int temp = array[y+1];
array[y+1] = array[y];
array[y] = temp;
}
}
}
//遍历数组
for (int z = 0; z < length; z++) {
printf("%d\t", array[z]);
}
printf("\n");
}
复制代码
自己写的选择排序和冒泡排序。
作者:
AGHM0312
时间:
2015-12-4 00:04
给你顶一个哈哥们
作者:
曼卿phyand
时间:
2015-12-4 00:39
6666 大神 牛逼!!
作者:
黑马。。肖锋
时间:
2015-12-4 02:29
给你顶一个哈哥们
作者:
junjunzhang
时间:
2015-12-4 07:49
神呐
作者:
杨立鹏
时间:
2015-12-4 10:09
写的不错~66666
作者:
活在当下学IOS
时间:
2015-12-4 22:48
小强啊 哈哈哈
作者:
Mr.Yan
时间:
2015-12-4 23:19
巩固下子,还是不错.
作者:
chensc
时间:
2015-12-5 20:13
学习学习!
作者:
刘炼1993
时间:
2015-12-5 23:06
牛逼 牛逼啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2