顾名思义,冒泡排序直观的意思是气泡越大冒的越快:),对应到我们的列表中就是数字最大的先选出来,然后依次进行。例如 myList = [1,4,5,0,6],比较方式为: 相邻的两个数字先进行比较,也就是myList[0]和myList[1],发现不是">"的关系,就继续比较myList[1]和myList[2]。。。依次进行,发现myList[2]>myList[3](及5>0),就进行交换,所以走完第一次全列表比较得到新列表[1,4,0,5,6],然后每一次扫描得到的新列表如下: 第一次...
排序算法很多地方都会用到,近期又重新看了一遍算法,并自己简单地实现了一遍,特此记录下来,为以后复习留点材料。废话不多说,下面逐一看看经典的排序算法: 1. 选择排序选择排序的基本思想是遍历数组的过程中,以i代表当前需要排序的序号,则需要在剩余的[i…n-1]中找出其中的最小值,然后将找到的最小值与i指向的值进行交换。因为每一趟确定元素的过程中都会有一个选择最大值的子流程,所以人们形象地称之为选择排序。举个实例...
基本思想希尔排序是基于插入排序的,又叫缩小增量排序。在插入排序中。标记符左边的元素是有序的,右边的是没有排过序的,这个算法取出标记符所指向的数据,存入一个暂时变量,接着,在左边有序的数组中找到暂时变量应该插入的位置,然后将插入位置之后的元素依次后移一位,最后插入暂时变量中的数据。试想。假如有一个非常小的数据项在靠近右端的位置上。把这个数据项插入到有序数组中时,将会有大量的中间数据项须要右移一位。这...
# 选择排序##本小节知识点:1. 【了解】选择排序2. 【掌握】选择排序的基本思想3. 【了解】练习---##1.选择排序- 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元 素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。---##2.选择排序的基本思想- 第一趟排序在所有待排序的n个记录中选出关键字最小...
排序算法——堆排序~大器晚成~ 2012-03-08 09:46 阅读:11393 评论:5 查找算法——找到序列中第二大的数(修正版)~大器晚成~ 2012-03-06 10:35 阅读:5687 评论:66 排序算法——快速排序~大器晚成~ 2012-02-29 10:13 阅读:114175 评论:51 排序算法——冒泡排序~大器晚成~ 2012-02-28 09:40 阅读:5394 评论:9 牛×的可视化排序~大器晚成~ 2012-02-24 17:10 阅读:1678 评论:3 排序算法——插入排序~大器晚成~ 2012-02-23 12:14 阅读:2222...
本文记录快速排序算法的一个精美实现,关于其中的一些优化或者思路请参考如下资料:快速排序中的分割算法的解析与应用http://www.cnblogs.com/hapjin/p/5518922.htmlhttp://blog.csdn.net/hapjin/article/details/49785477http://blog.csdn.net/hapjin/article/details/49201341 publicclass QuickSort{//分割数组,将数组分成两部分. 一部分比pivot(枢轴元素)大,另一部分比pivot小privatestaticint parition(int[] arr, int left, ...
本文主要是解析选择排序算法:直接选择排序和堆排序。 一、直接选择排序 基本思想: 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类...
插入排序算法 using System;namespace AlgorithmDemo {class Program{staticvoid Main(string[] args){int[] arr = newint[10];for (int i = 0; i < 10; i++){arr[i] = new Random(DateTime.Now.Millisecond + i).Next(1, 100);}Console.WriteLine("排序之前的数组为 :********************************");arr.Show();Console.WriteLine();Console.WriteLine("排序中的数组为 :********************************");InsertSort(a...
插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,终于将全部无序区元素都移动到有序区完毕排序。要点:设立哨兵,作为暂时存储和推断数组边界之用。实现:Void InsertSort(Node L[],int length){Int i,j;//分别为有序区和无序区指针for(i=1;i<length;i++)//逐步扩大有序区{j=i+1;if(L[j]<L[i]){L[0]=L[j];//存储待排序元素While(L[0]<L[i])//查找在有序区中...
排序 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法 (稳定的排序是指排序前后相同的两个数的相对位置是一致的)一.冒泡排序1.算法描述 比较相邻元素,如果第一个比第二个大,交换位置,这样每经过一趟就冒出一个最大的2.代码实现 public static int[] bubbleSort(int arr[]) {int len = arr.length;for (int i = 0; i < len; i++) {for (int j = 0;...
package com.kuang;import java.util.Arrays;/** * @auther 付强 * @date 2020/2/15 - 10:46 */public class RadixSort { public static void main(String[] args) { int[] arr=new int[]{23,6,189,45,9,289,56,1,789,32,65,652,5}; radixSort(arr); System.out.println(Arrays.toString(arr)); } public static void radixSort(int[] arr){ //存数组中最大的数字 int max=Integer.MI...
这是最基本的两种排序算法,比它效率高的还有归并排序,堆排序,快速排序等算法,作为一个IT民工应该好好掌握。 冒泡排序和选择排序都有两层循环,下面逐一介绍: 冒泡排序: 1.外层循环,控制冒泡次数,起始从loop=1开始,结束标识是loop<length,循环length-1次(从数组的第二个数开始冒泡)。 2.内层循环,选出对应轮的最大数,即第K轮冒泡选出的是第N-k-1大的数,故循环从loop=0开始,结束标志loop<N-k,循环N-k次...
排序数组:$arr(1,43,54,62,21,66,32,78,36,76,39); 用四种排序算法进行排序冒泡排序:(思路:对未排好序的数,从前往后两个数一次进行比较和调整,大的下沉,小的上升) $arr=array(1,43,54,62,21,66,32,78,36,76,39); function bubbleSort($arr) { $len=count($arr); //该层循环控制 需要冒泡的轮数 for($i=1;$i<$len;$i++) { //该层循环用来控制每轮 冒出一个数 需要比较的次数 for($k=0;$k<$len-$i;$k++) { if(...
Insertion:插入排序,每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 详细介绍见:http://www.cnblogs.com/kkun/archive/2011/11/23/2260265.htmlSelection:选择排序,直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小(或最大)数字出来,顺序放入新数组,直到全部拿完。详细介绍见:http://www.cnblogs.com/kkun/archive/2011/11/23/2260281.htmlBubble:泡排序,是一个两层...
gamefrye 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序的基本思想将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;将这些有序序列再次归并,得到n/4个...