`

冒泡排序与选择排序代码体现

 
阅读更多

 

       在论坛上看到有朋友对冒泡和选择排序不懂,所以就写了这篇博文说说这两种排序的区别

       冒泡排序是从第一个开始跟后面比较,如果后面一个比第一个大就交换,接着第二个继续和第三个比较,如果第三个比第二个大,继续交换,以此类推。每一次排序的结果都会把最大的往后面排,直到排序结束。

       选择排序是将第一个与后面的每一个值比较,比如第一次与第二个比较,如果大就交换两个数值的位置,然后继续用第一个与三个继续比较,第三个比第一个大就交换位置,反之,就不交换;继续用第一个与后面的比较,以此类推,下次循环的时候就用第二个与后面的比较,反复前面的比较步骤,直到所有排序结束
       不同:冒泡排序每一次的结果是把大的往后面移,选择排序是把小的往前移。

最后我附上代码,你比较一下吧(置换位置的代码还能提取出来重构成单独的方法,减少代码量)

 

public class Sort {

	public static void main(String[] args) {
		bubbleSort();
		System.out.println("--------------------");
		selectSort();
		
	}
	//冒泡排序
	public static void bubbleSort(){
		int[] arr = {49,56,12,87,30,25,14};  //定义一个未排序的数组
		System.out.print("进行未排序前的遍历:");
		printArray(arr); //遍历数组
		System.out.println();
		for(int i = 0; i < arr.length; i++){
			for(int j = 0; j < arr.length - 1 - i; j++){//每排序完一次,最大的就在最后面,所以不需要再比较,每次就少比较i次
				if(arr[j] > arr[j+1]){  //如果前面一个元素比后面一个元素大,就交换位置
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
			System.out.print("第"+(i+1)+"次的结果为:");
			printArray(arr); //遍历每一次排序的结果
			System.out.println();
		}
		
	}
	//选择排序
	public static void selectSort(){
		int[] arr = {49,56,12,87,30,25,14};
		System.out.print("进行未排序前的遍历:");
		printArray(arr); //遍历数组
		System.out.println();
		for(int i = 0; i < arr.length; i++){
			for(int j = i+1; j < arr.length; j++){
				if(arr[i] > arr[j]){  
					int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
			System.out.print("第"+(i+1)+"次的结果为:");
			printArray(arr); //遍历每一次排序的结果
			System.out.println();
		}
	}
	//打印数组
	public static void printArray(int[] arr){
		System.out.print("["+arr[0]+",");
		for(int i = 1; i < arr.length; i++){
			if( i != arr.length - 1){
				System.out.print(arr[i]+",");
			}else{
				System.out.print(arr[i]+"]");
			}
		}
	}

}



 

分享到:
评论

相关推荐

    冒泡算法和选择算法演示程序

    基于C语言的排序算法演示程序,包含了“冒泡算法”和“选择算法”两个基础的排序算法。学习程序设计,重点是对算法的理解。本程序动态演示了排序过程,详尽体现涉及到的各个细节,力求让初学者更好地理解这两个算法...

    简单理解js的冒泡排序

    我也知道,关于我标题中的排序,博客园中的很多作者都写过详细解释的文章,可能,笔者本人认为自己的理解更能体现出这个排序的工作原理吧,所以,笔者也就大惭不愧的在这里再次写下关于冒泡排序的文章,有需要的读者...

    数据结构_day05_排序算法

    排序算法排序排序算法的稳定性冒泡排序冒泡排序的分析代码体现冒泡排序的时间复杂度选择排序选择排序分析代码体现选择排序的时间复杂度插入排序插入排序的分析代码演示希尔排序希尔排序的分析希尔排序的代码演示希尔...

    我的内部排序

    设计要求:(1)要求实现起(冒)泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序以及2路归并排序算法。设计良好的功能界面。(2)要求待排序的元素的关键字为整数。其中的数据要用伪随机产生程序...

    Java 算法实现代码.rar

    1.排序的定义: 所谓排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序。这种新序列遵循着一定的规则,体现出一定的规律,因此,经处理后的...交换排序: 冒泡排序、快速排序 归并排序 基数排序

    python练习题 :用户任意输入10个整数到列表中,然后由大到小排列并输出。

    2.python可以在多种平台运行,这体现了python的___可移植___特性。 3.python源代码被解释器转换后的格式为___.pyc______。 4.python3.x默认使用的编码是_UTF-8________。 5.如果想测试变量的类型,可以使用___type()...

    net学习笔记及其他代码应用

    8.请编程实现一个冒泡排序算法? 答: int [] array = new int ; int temp = 0 ; for (int i = 0 ; i ; i++) { for (int j = i + 1 ; j ; j++) { if (array[j] ) { temp = array ; array = array[j] ; ...

    超级有影响力霸气的Java面试题大全文档

    抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确...

    java 面试题 总结

    抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性...

    计算机二级公共基础知识

    算法的3种基本控制结构是:顺序结构、选择结构、循环结构。 (4)算法基本设计方法 算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。 (5)指令系统 所谓指令系统指的是一个计算机系统能执行...

    C++银行管理系统课程设计.7z

    用户的需求具体体现在各种信息的提供、保存、更新和查询方面,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,为后面的设计打下基础。 本设计实现了用C++编程语言...

Global site tag (gtag.js) - Google Analytics