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

来源:互联网 发布:数据库第七章答案 编辑:程序博客网 时间:2024/04/29 10:29


冒泡排序的实现:

对于外层循环,每一轮循环将一个数向上浮出,故最少要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_  25int 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]<<"  ";}


0 0
原创粉丝点击