冒泡排序:(升序排列)给定一组数据,比较第一个元素和第二个元素的关系,并且把大的放到前面,小的放到后面。然后再依次比较第二个和第三个、第三个和第四个……,直至第n个,这样,第一趟就排序完成了。然后进行第二趟……,第n-1趟,其中n为元素的个数。
来看下面这个例子。
6 3 8 2 9 1
首先是,6和3比较,6>3,交换位置,结果变成了 3 6 8 2 9 1
6和8比较,6<8,不交换。
8和2 比较,8>2,交换位置,结果变成了 3 6 2 8 9 1
8和9 比较,8<9,不交换。
9和1比较,9>1,交换位置,结果变成了 3 6 2 8 1 9
至此,第一趟结束,可以确定的位置是最后一个元素。
第二趟开始:
3<6,不交换。
6>2,交换位置,结果变成了 3 2 6 8 1 9
6<8,不交换。
8>1,交换,结果变成了 3 2 6 1 8 9
第二趟结束。
第三趟开始:
3>2,交换位置。结果变成了 2 3 6 1 8 9
3<6,不交换。
6>1,交换位置,结果变成了 2 3 1 6 8 9
第三趟结束。
第四趟开始:
2<3,不交换。
3>1,交换位置,结果变成了 2 1 3 6 8 9
第四趟结束。
第五趟开始:
2>1,交换位置。结果变成了 1 2 3 6 8 9
第五趟结束。
code如下:
void bubbleSort(int *arr,int n) //数组,数组中的元素个数
{
int i,j,temp;//i为趟数,j为元素下标,temp为中间变量
for(i=1;i<=n-1;i++){
for(j=0;j<=n-i-1;j++){//因为j是下标0开始,需要比较元素的个数减趟数次,故需要加 1
if(arr[j]>arr[j+1]){
temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。