冒泡排序,选择排序,插入排序

从今天开始希望自己的博客可以持续的更新起来,由于本人能力有限,所以有些内容可能会有疏漏或者不全面,希望大家可以指出来,让我们一起学习,一起进步。

今天的内容是最简单的三个排序算法,冒泡排序,选择排序,插入排序,它们的时间复杂度都是O(N^2)。

冒泡排序:首先第一个数与第二个数比较,如果前面的大于后面的就交换两个数,然后第二个与第三个比较,直到比较到最后,此时最后一个数为数组最大值,然后循环次步骤,第二次比较到倒数第二位,这样经过两次循环最后两位就排好了,经过N次循环,数组就拍好了

选择排序:从数组中选择出最小的一个数,交换这个数和数组第一个数,这样第一个数就排好了,然后从第二个数到最后一个数中再选出最小的与第二个数交换,这样操作N次,数组排好顺序。

插入排序:首先比较数组第二个数和第一个数的大小,将小的放到前面。然后让第三个数依次与第二个数和第一个数比较,找到第三个数插入的位置,使得前三个数字有序,然后是第四位,如此循环,直到最后,数排好顺序。

下面上代码:由于我是学习前端的所以代码用JavaScript语言描述

//冒泡排序
function sortBubble(array){
    var length=array.length;
    var cache;
    for(var j=length-1;j>0;j--){
        for(var i=0;i<j;i++){
            if(array[i]>array[i+1]){
                cache=array[i];
                array[i]=array[i+1];
                array[i+1]=cache;
            }
        }
    }
    return array;
} 
//选择排序
function sortSelection(array){
    var length=array.length;
    var currentMin,cache;
    for(var j=0;j<length;j++){
        currentMin=j;
        for(var i=j+1;i<length;i++){
            if(array[i]<array[currentMin])
                currentMin=i;
        }
        cache=array[j];
        array[j]=array[currentMin];
        array[currentMin]=cache;
    }
    return array;
}
//插入排序
function sortInsert(array){
    var length=array.length;
    var cache;
    for(var i=1;i<length;i++){
        for(var j=i-1;j>0;j--){
            if(array[i]<array[j]){
                cache=array[i];
                array[i]=array[j];
                array[j]=cache;
                i=j;
            }else{
                break;
            }
        }
    }
    return array;
}

代码都经过我亲自测试,可以完成对数组进行排序

时间: 2024-08-08 09:40:32

冒泡排序,选择排序,插入排序的相关文章

算法 排序lowB三人组 冒泡排序 选择排序 插入排序

参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性: 经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定

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

冒泡排序 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

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

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

过三关 Java冒泡排序选择排序插入排序小练习

材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选择用插入排序法,来进行排序. 测试类: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; //功能:猴子排序 public class MonkeySelect {

C++中的冒泡排序,选择排序,插入排序

最简单的插入排序:思想,两两之间比较,时间复杂度o(n^2) void bubblesort(vector<int>&vec, int n) { if (&vec==NULL) return; int temp; bool flag; for (int i = 0; i < n - 1; i++)//外层循环控制循环次数 { flag = false;//判断是否有序的标志 for (int j = 0; j < n - 1 - i; j++)//内层循环控制边界

冒泡排序 选择排序 插入排序 java

双向冒泡 1 package com.huang; 2 3 public class _014_bubb_sort { 4 5 int[] b={1,2}; 6 static int a[]={12,4,35,65,43,63,2,6,9,544,43543}; 7 public static void main(String[] args) { 8 display(); 9 10 //冒泡 11 for(int i=0;i<a.length/2;i++) 12 { 13 for(int j=0

简单排序算法 冒泡排序 选择排序 插入排序

冒泡排序: 总体思路:对未排序的各个元素,依次比较两个元素,如果这两个元素为逆序(与想要的顺序相反),则交换这两个元素. 这样可以有两种排序的思路: 思路一: 固定位置排序:比如有一个未排序队列,下标依次为0,1,2,.....N-1, 第一轮排序:首先固定位置0,将下标为0的元素依次和下标为1.下标为2.....下标为N-1的元素相比较,若相比较的两个元素为逆序,则交换这两个元素,这样第一轮排序完之后,位置为0的元素,就是最大的(最小的). 第二轮排序:首先固定位置1,将下标为1的元素依次和下

冒泡排序/选择排序/插入排序(c#)

---恢复内容开始--- 每次看这些排序都像没见过一样,完全理解不了,可是不久前明明了解的十分透彻.记下来记下来记下来! 1>>>冒泡排序:相邻的两两相比 把大的(或者小的)放后边,这样一轮下来,最下边的肯定是最大的数(或者最小的数).重复arr.length次就能把arr按有序排列了. class Program { static void Main(string[] args) { int[] arr = new int[] { 22, 11, 2, 9, 6 }; MP(arr);

C# 插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序

以下列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序,然后是測试的样例.代码位置:http://download.csdn.net/detail/luozuolincool/8040027 排序类: public class Sortings { //插入排序 public void insertSort(int[] array) { int temp = 0; int index = 0; for (int i = 0; i <

C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序

下面列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序,然后是测试的例子.代码位置:http://download.csdn.net/detail/luozuolincool/8040027 排序类: public class Sortings { //插入排序 public void insertSort(int[] array) { int temp = 0; int index = 0; for (int i = 0; i <