经典排序算法-冒泡与选择

1 冒泡排序的思想类似气泡上升,数组前后元素两两比较,如果前面的元素比后面的大就交换位置,每趟排序都可以确定最大值的位置

2 选择排序思想类似打擂台,每趟比较都把最小的值排在数组最前面,每趟比较都可以确定最小值的位置

public class SortTest {
	public static void main(String[] args) {
		//选择排序
		int arr[] = {2,9,10,5,4,8,7,1,3,6};
		choose(arr);
		System.out.println();

		//冒泡排序
		int arr2[] = {2,9,10,5,4,8,7,1,3,6};
		bubble(arr2);
	}
	/**
	 * 选择排序
	 * @param arr
	 */
	public static void choose(int arr[]){

		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[j];

					arr[j] = arr[i];

					arr[i] = temp;
				}

			}
		}

		for(int a:arr){
			System.out.print(a+" ");
		}
	}

	/**
	 * 冒泡排序
	 */
	public static void bubble(int arr[]){
		for(int i=0;i<arr.length;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;
				}
			}
		}
		for(int a:arr){

			System.out.print(a+" ");
		}
	}
}

程序运行结果为:1 2 3 4 5 6 7 8 9 101 2 3 4 5 6 7 8 9 10

  

时间: 2024-10-07 14:32:47

经典排序算法-冒泡与选择的相关文章

排序算法(冒泡,选择,插入,快速,希尔,堆排序,基数,计数排序 )

时间复杂度为O(n^2)的排序算法:冒泡排序,选择排序,插入排序 数组a[N]中进行冒泡排序 冒泡排序: 假如数组为[3,7,4,6,8,9,1]-->[3,7,4,6,8,9,1]-->[3,4,7,6,8,9,1]....一直进行下去,相邻2个数进行比较. 1.第一轮:数组相邻2个元素相比较(a[0]和a[1]比,a[1]和a[2]比,a[2]和a[3]比,a[3]和a[4]比...),较大数往后放,一直相邻比较到数组最后一个数. 第二轮继续数组相邻比较,此时一直相邻比较到数组倒数第二个元

基础排序算法—冒泡,插入,选择

前言 冒泡,插入,选择这三种基础的排序算法,比较简单效率不高,工作中一般不会使用,但是当做算法来研究还是能了解一些知识的,本文以<数据结构与算法之美>为基础,详细解析一下. 正文 首先要引入几个概念 稳定性 如果待排序数组中有相同的元素,排序过后它们的相对顺序不发生变化. 比如 2,9,3,4,8,3 排序过后为2, 3 , 3, 4, 8, 9 这两个3的相对顺序不变.这样就是具有稳定性. 稳定性可以保证复杂数据结构排序时的相对有序性. 比如我们要对一笔订单先按金额排列,金额相同的再按时间排

经典排序算法回顾:选择排序,快速排序

//选择排序基本思想就是:一个一个最值查找,然后排序 //the simple insertSortWay void selectSort(int *a){ int n = strlen(a); for(int k; k<n; k++){ int l = k; for(int j; j<k; j++){ if(a[j] > a[l]){ l = j; } } int tmp = a[k]; a[k] = a[l]; a[l] = tmp; } } //the nice insertSor

简单数值排序算法 冒泡、选择、 直接插入排序

1. 选择排序法 找到第一小的数字,放在第一個位置:再找到第二小的数字,放在第二個位置 依次找到每次遍历的最小的值.一次找一個数字,如此下去就会把所有数值按照 順序排好.注意,与冒泡不同,遍历的过程中并不交换数值.一次遍历结束才交换. package com.sphere.algorith.design; import java.util.Arrays; public class Test { public static void main(String[] args) { int[] arr

C#实现所有经典排序算法

C# 实现所有经典排序算法 1 .选择排序 选择排序 原理: 选择排序是从冒泡排序演化而来的,每一轮比较得出最小的那个值,然后依次和每轮比较的第一个值进行交换. 目的:按从小到大排序. 方法:假设存在数组:72, 54, 59, 30, 31, 78, 2, 77, 82, 72 第一轮依次比较相邻两个元素,将最小的一个元素的索引和值记录下来,然后和第一个元素进行交换. 如上面的数组中,首先比较的是72,54,记录比较小的索引是54的索引1.接着比较54和59,比较小的索引还是1.直到最后得到最

常见经典排序算法学习总结,附算法原理及实现代码(插入、shell、冒泡、选择、归并、快排等)

博主在学习过程中深感基础的重要,经典排序算法是数据结构与算法学习过程中重要的一环,这里对笔试面试最常涉及到的7种排序算法(包括插入排序.希尔排序.选择排序.冒泡排序.快速排序.堆排序.归并排序)进行了详解.每一种算法都有基本介绍.算法原理分析.算法代码. 转载请注明出处:http://blog.csdn.net/lsh_2013/article/details/47280135 插入排序 1)算法简介 插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过

经典排序算法 - 选择排序Selection sort

经典排序算法 - 选择排序Selection sort 顾名思意,就是直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小数字出来, 顺序放入新数组,直到全部拿完 再简单点,对着一群数组说,你们谁最小出列,站到最后边 然后继续对剩余的无序数组说,你们谁最小出列,站到最后边 再继续刚才的操作,一直到最后一个,继续站到最后边,现在数组有序了,从小到大 举例 先说看每步的状态变化,后边介绍细节,现有无序数组[6 2 4 1 5 9] 第一趟找到最小数1,放到最前边(与首位数字交换) 交换前

排序算法-冒泡、插入、归并、希尔、快速、选择--代码总结

冒泡排序代码: #include <iostream> #include <string> using namespace std; template<class ItemType> void bubbleSort(ItemType theArray[], int n) { bool sorted = false; // False when swaps occur int pass = 1; while (!sorted && (pass < n

C/C++中的经典排序算法总结

C/C++中的经典排序算法总结 在C/C++中,有一些经典的排序算法,例如:冒泡排序.鸡尾酒排序或双向冒泡排序(改进的冒泡排序).选择排序.直接插入排序.归并排序.快速排序.希尔排序和堆排序等等.下面对这些排序算法进行一一解析并给出示例代码以共享之. 1.冒泡排序 冒泡排序是最基本的排序算法,之所以称之为冒泡排序是因为在冒泡排序的过程中总是大数往前放,小数往后放,相当于气泡上升. 冒泡排序的基本原理是:依次比较相邻的两个数,将大数放在前面,小数放在后面. 影响冒泡排序算法性能的主要部分就是循环和