排序算法之一--冒泡排序,选择排序,插入排序

一.排序算法定义

  1.排序算法定义

    排序算法是一种能将一串数据依照特定顺序进行排列的一种算法

  2.六种排序算法理解方式

    想象小时候老师给我们按照身高进行排队时用到的方法,脑子里面要浮现老师排身高的场面   以从矮到高进行排序为例

  3.稳定性的定义

    一个排序算法是稳定的,当有两个相等键值的纪录R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前。

二.三种基本排序算法

  1.冒泡排序:“移”

    把最高的移到最右边

    第一次循环,找到最高的那个人放到最右边       方法是从头两两进行比较将两个钟高的一个往右边移动,移到最后就将最高的移到了最右边

    第二次循环,用同样的方法将次高的那个人往右移倒数第二个位置就是次高的人

    依次类推,在剩下的人中将高的都往右边挤,挤到最后剩下的最高的就在最右边了

       

  2.选择排序:“揪”

    把最矮的揪出来放到最左边

    第一遍循环:将第一个位置的人揪出来空出第一个位置,跟剩下的人一一比较,如果有比他矮的,就将那个矮的揪出来再与剩下的进行比较,比较到最后就把最矮的那个歌人揪出来了,把                               最矮的那个人放到第一个位置

    第二遍循环:把第二个人揪出来跟剩下的人进行比较,比较到最后就把剩下的最爱的那个人揪出来了放到了第二个位置

    依次类推,每个位置上就放的是应该放的那个数值 

    冒泡排序是将最大的移到最右边,而选择排序是将最小的揪出来放到最左边

   

  3.插入排序:“插” 

    老师先把前两个同学排好高矮,然后排三个人的身高,因为前面两个人已经排好序了,只要把第三个人插到合适的位置,三个人就排好序了,然后把第四个人插到合适的位置,前四个人就排好序了,以此类推

    里面循环完后将加入的那个数值插入正确的位置

    

    

    

 

时间: 2024-08-08 14:49:01

排序算法之一--冒泡排序,选择排序,插入排序的相关文章

算法_基本排序算法之冒泡排序,选择排序,插入排序和希尔排序

排序的元素实现了Comparable接口,以达到对于通用性. 最基础的排序是冒泡排序,下面是其思路: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的元素重复以上的步骤,除了最后一个. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. 下面是其实现代码: public class Maopao { public void sort(Comparable[]

基本排序算法(冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 希尔排序)

冒泡排序 public static void bubbleSort(int[] arr){ int lgn = arr.length; for (int i = 0; i < lgn - 1; i++) { for (int j = 0; j < lgn - 1 - i; j++) { if(arr[j] > arr[j + 1]){ int temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } } 选择排序 publ

排序算法之直接选择排序

直接选择排序是最简单直观的排序算法,属于选择排序. 直接算法的排序思路: 第一趟,程序将记录定位在第一个数据上,拿第一个数据依次和后面的数据进行比较,如果第一个数据大,交换,依次类推.经过第一趟比较,这组数据中最小的数据被选出来,排在第一位. 第二趟,程序将记录定位在第二个数据上,拿第二个数据依次和后面的数据比较,同样地,第二个数据大就交换.经过第二次比较,这轮最小的书被选出来,放在了第二位. 这样经过n-1次比较,这组数据就会变得有序.下面是直接选择的排序算法实现. /** * Created

排序算法七:选择排序之堆排序

排序算法七:选择排序之堆排序 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言 在我的博文<"主宰世界"的10种算法短评>中给出的首个算法就是高效的排序算法.本文将对排序算法做一个全面的梳理,从最简单的"冒泡"到高效的堆排序等. 上博文讲述了选择排序中的简单排序算法,本文介绍的堆排序是树性选择排序,采用堆这个数据结构来辅助排序. 排序相关的的基本概念 排序:将一组杂乱无章的数据按一定的规律顺次排列起来. 数据

排序算法系列——直接选择排序

前面两篇介绍了两种插入排序算法:直接插入排序和希尔排序.这篇介绍选择排序的一种:直接选择排序.从名字就可以看出直接选择排序与直接插入排序很相似,两者相同点在与都是将待排序序列分成有序区和无序区两部分,不同之处在于直接插入排序是从无序区选出一个插入到有序区合适的位置,而直接选择排序是从无序区选出最小的一个插入到有序区尾部,使得有序区保持有序. 基本思想: 一组待排序的数据,首先将其划分成两部分,一部分是已排好序的,另一部分是待排序的,然后依次从待排序部分取出最小的元素插入到已排序部分的尾部,保证有

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

//选择排序基本思想就是:一个一个最值查找,然后排序 //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

排序算法2--简单选择排序、堆排序

一.简单选择排序和堆排序都属于选择排序 选择排序的思想是:每一趟从待排序的记录中选出关键字最小的记录,按顺序放在以排序的记录序列的后面,知道全部拍完为止. 二.简单选择排序(直接选择排序) 1.简单选择排序法是每次循环找出最值,循环结束后将最值调整到合适位置,交换的次数少. 每次找出当前无序队列中的最小的元素与第一个交换位置,再选择第二小的与第二个交换位置 原始队列:   3 5 6 2 4 1(最小元素1与3交换) 第一步: 1 5 6 2 4 3 (当前最小元素2与5交换) 第二步: 1 2

排序算法 之 直接选择排序

上一篇我们记录了冒泡排序算法的实现,这次我们来看直接选择排序是如何实现的. 1.直接选择排序: 基本思想: 直接选择排序也是对被排序的序列进行n-1次遍历,与冒泡排序不同的是,它并不对本次遍历序列内的元素两两进行比较并根据比较的结果来决定是否交换,而是找出本次遍历的序列内元素的最小值,并插入本次遍历的开始位置,直至遍历完成序列有序,直接选择排序算法的时间复杂度为O(n2):: 代码实现: /// <summary> /// 直接选择排序 /// </summary> /// <

【排序算法】05选择排序

接上文:[排序算法]04快速排序 选择排序的思路:共需要进行length-1次选择,每次选择要找到选择范围内最小记录的位置, 将最小记录与选择范围内的第一个记录互换位置. 向工具类ArraySorterUtils中添加选择排序的实现,代码如下: 1 package org.liws1.sort; 2 3 import java.util.Arrays; 4 import java.util.Comparator; 5 6 /** 7 * 数组的排序,这里统一做升序排序 8 */ 9 public

排序算法入门之选择排序-Java实现

本文参考http://blog.csdn.net/m0_37568091/article/details/78023705 选择排序是先从对象数组中选出最小的放在第一个位置,再从剩下的元素中选择次小的放在第二个位置,以此类推...这里以数组排序实现. public static void chooseSort(int[] a){ for(int i=0;i<a.length;i++){ //假设最小值下标是i int min=i; //依次找出最小值 for(int j=i+1;j<a.len