java 冒泡排序

public class BubbleSort1 {
	/**
	 *冒泡排序Java版:每次比较两个相邻的元素,将较大的元素交换至右(左)端 
	 */
	//冒泡排序基础版
	public int [] A(int [] arr){
		int temp;
		for (int i = 0; i < arr.length-1; i++) {
			for (int j = 0; j < arr.length-i-1; j++) {
				if (arr[j+1]<arr[j]) {
					temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}
		}
		return arr;
	}
	
	
	//冒泡排序进阶版1
		public int [] B(int [] arr){
			int i=arr.length-1;//初始时,最后位置保持不变
			while (i>0) {
				int flag=0;//每趟开始时,无交换记录
				for (int j = 0; j < i; j++) {
					if (arr[j+1]<arr[j]) {
						flag=j;//记录交换的位置
						int temp=arr[j];
						arr[j]=arr[j+1];
						arr[j+1]=temp;
					}
				}
				i=flag;//为下一趟排序作准备
			}
			return arr;
		}
		
		//冒泡排序进阶版2
				public int [] C(int [] arr){
					int low=0;
					int high=arr.length-1;//设置变量的初始值
					while (low<high) {
						int f1=0,f2=0;//每趟开始时,无交换记录
						for (int i = low; i < high; ++i) {
							if (arr[i+1]<arr[i]) {
								int temp=arr[i];
								arr[i]=arr[i+1];
								arr[i+1]=temp;
								f1=i;
							}
						}
						high=f1;//记录上次位置
						for (int j = high; j >low; --j) {
							if (arr[j]<arr[j-1]) {
								int temp=arr[j];
								arr[j]=arr[j-1];
								arr[j-1]=temp;
								f2=j;
							}
						}
						low=f2;//修改low值
					}
					return arr;
				}
				
				public void printArray(int [] arr){
					System.out.print("{");
					for (int i = 0; i < arr.length; i++) {
						//判断一下是否为数组最后一个值
						if (i!=arr.length-1) {
							System.out.print(arr[i]+",");
						} else {
							System.out.print(arr[i]+"}");
						}
					}
				}
				
}

  

posted @ 2021-03-04 16:48  南山下的采药人  阅读(70)  评论(0)    收藏  举报