java 排序算法实现 其一:冒泡排序

这篇博客详细介绍了冒泡排序的实现原理,包括外层循环和内层循环的具体逻辑,并提供了Java版本的实现代码。文章还指出,冒泡排序在每一轮循环中会将一个数向上浮出,最少需要N-1次循环。读者可以参考GitHub上的Sort.java文件获取完整代码。
摘要由CSDN通过智能技术生成


冒泡排序的实现:

对于外层循环,每一轮循环将一个数向上浮出,故最少要N-1次循环。

对于内存循环,第i次循环的时候,上面的 i-1 个已经排好了此时需要进行冒泡排序的只有N-i+1个。下标则是从0到N-i。具体的代码如下


外层循环的下标从0到N-1,由于最后一次循环没有必要,所以只需要到N-2即可。

内层循环到下表从0到N-i-1,由于比较的是arr[i]和arr[i+1],所以应该的下标是从0到N-i-2;


具体的代码下载链接为:https://github.com/BLYang7/DataStructure/blob/master/Sort.java


排序的流程如下图:



对于单次的循环,就是在从0到N-i这个区间内,将某个元素向上浮出,比如说外循环的第三次循环:



实现代码如下:


java版:

public class BubbleSort {
	/**
	 * 冒泡排序算法 java实现
	 */
	private static void bubbleSort(int[] arr){
		for(int i=0; i<arr.length-1; i++){
			for(int j=0; j<arr.length-i-1; j++){   //注意下标
				if(arr[j] > arr[j+1]){
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
	}
	
	//测试
	public static void main(String[] args) {
		int[] arr = {1,2,3,7,4,6,5,0};
		bubbleSort(arr);
		for(int a : arr){
			System.out.print(a + "  ");
		}
	}
}

C++版:

#include"iostream"
using namespace std;

#define  _MAX_  25
int R[_MAX_];

void BubbleSort(int n)
{
	int i,j,temp;
	
	for(i=0;i<n-1;i++)			//总共需要进行n-1次轮询
		for(j=0;j<n-i-1;j++)	//每次轮询都要从第一个数字到第n-i-1个,在数组顶部已经排好的,不用讨论
		{
			if(R[j]>R[j+1])		//每次轮询的时候,如果前一个值比后一个值大,则选择互相调换
			{
				temp=R[j];
				R[j]=R[j+1];
				R[j+1]=temp;
			}
		}
}

void main()
{
	int k,n;
	
	cout<<"input how many number you want to make in order:"<<endl;
	cin>>n;

	for(k=0;k<n;k++)
		cin>>R[k];

	BubbleSort(n);

	for(k=0;k<n;k++)
		cout<<R[k]<<"  ";

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值