黑马程序员技术交流社区
标题:
初识for语句相关的冒泡,选择排序
[打印本页]
作者:
墨琰
时间:
2015-8-9 21:40
标题:
初识for语句相关的冒泡,选择排序
#include<stdio.h>
int bubbleSort(int[] arr);
int selectSort(int[] arr);
int foreach(int[] arr,int key);
int printArray(int[] arr)
int main(){
int[] arr={9,4,1,8,6,5,1};
//冒泡排序
printArray(arr);
bubbleSort(arr);
printArray(arr);
//选择排序
printArray(arr);
selectSort(arr);
printArray(arr);
//找值
foreach(arr);
}
//冒泡排序
int bubbleSort(int[] arr){
for(int i=0;i<size;i++){// 外层循环控制整个循环要比较的次数
for(int j=0;j<size-1-i;j++){//内循环每循环完一次总有一个最大值交换到末尾,将比较次数减i,减一是为了防止脚标越界
if(arr[j]>arr[j+1]){//判断数组中一对相邻数据,进行交换,大的元素下沉
int temp=arr[j];// 定义一个第三方变量用于存储数组中要比较的的一个元素
arr[j]=arr[j+1];//将后一个要比较的元素放到第一个元素中
arr[j+1]=temp;
}
}
}
//选择排序
int selectSort(int[] arr){
for(int i=0;i<size-1;i++){//外层循环控制总的比较次数
for(int j=i+1;j<size;j++){//内循环j=i+1,每次比较第二元素总是第一个元素的后一位
if(arr[i]>arr[j]){//设定第一个元素为最大值,与其后一位元素比较大小,每次循环后第二元素往后移一位
int temp=arr[i];//交换两个数据元素,将小值放在固定位大值往后放
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
//找值
int foreach(int[] arr,int key){//找到指定元素在数组中的存储位置
for(int i=0;i<size;i++){//遍历数组进行查找
if(arr[i]==key){//如果找到
return i;//返回对应的脚标
}else{//否则没有找到返回负一
return -1;
}
}
}
//打印数组元素
int printArray(int[] arr){//输出打印数组
printf("[");
for(int i=0;i<size;i++){//遍历整个数组进行输出
if(arr[i]<size-1){
printf("%d,",arr[i]);
}else{
printf("%d]\n"arr[i]);
}
}
}
}
复制代码
作者:
ljk-tt
时间:
2015-8-9 21:50
好详细啊,冒泡不是太懂,复制研究下!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2