三种排序(摘抄于书)

  1. 选择排序

    for(int i=1;i<n;i++)
        for(int j=i+1;i<=n;j++)
            if(a[i]<a[j])
                   {int t=a[i];a[i]=a[j];a[j]=t;}

  2. 冒泡排序

    (int i=1;i<n;i++)
    {
        bool flag=false;
        for(int j=1;j<=n-i;j++)
            if(a[j]>a[j+1])
            {
                 flag=true;
                int t=a[j];a[j]=a[j+1];a[j+1]=t;
            }
        if(flag==false)break;
    }

  3. 插入排序

    int a[n+2];
    for(int i=2;i<=n;i++)
    {
        a[0]=a[i];
        j=i-1;
        while(a[j]>a[0])
        {
            a[j+1]=a[j];j--;
        }
        a[j+1]=a[0];
    }

时间: 2024-12-23 05:03:22

三种排序(摘抄于书)的相关文章

JavaScript新手学习笔记3——三种排序方式(冒泡排序、插入排序、快速排序)

每种编程语言学到数组的时候,都会讲到排序算法,当时学C语言的时候,卡在排序算法.今天来总结一下javascript中如何实现三种排序算法. 1.冒泡排序(默认升序排列哦) 原理: 冒泡排序的原理,顾名思义,就是小数往上冒,大数往下沉.从第一个数开始,如果比第二个数大就交换位置,然后跟第三个数字进行比较大小,交换位置等. 举例一下,有数组[2,4,3,5,1] 第一次循环:2<4  不交换:4>3 交换:4<5不交换:5>1交换,故结果是[2,3,4,1,5]; 第二次循环:2<

三种排序方法用java实现

用三种方法实现几个数的排序:冒泡排序,选择排序,调用Java里的库函数 1. 冒泡排序:顾名思义,就是将小的数一步一步往上冒,大的数一个个往下沉,下面是自己写的对冒泡排序的理解,字丑将就看一下吧. 2.选择排序:以从小到大为例,定义一个变量min_inter,用于记录最小值的下标,找到最小的数放在第0位,第二小放在第1位,后面依次. 3.直接调用:Arrays.sort(num3):需要导入import java.util.Arrays: 下面是代码: 1 import java.util.Ar

常见的三种排序

交换排序 假设有一个数组nums,长度为5,要对它进行升序排序,交换排序总体思路是: 在下标0-4范围内,将该范围内最小的数字提到下标0 在下标1-4范围内,将该范围内最小的数字提到下标1 在下标2-4范围内,将该范围内最小的数字提到下标2 在下标3-4范围内,将该范围内最小的数字提到下标3 排序完成! 写成代码就应该是: for (int i = 0; i < 4; i++){ //在 i-4 范围内,将该范围内最小的数字提到i} 这是假设nums数组长度为5,如果nums数组长度为6呢?用同

三种排序算法(归并排序、快速排序,堆排序)

归并排序:建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即先使每个子序列有序,再使子序列段间有序.若将两个有序表合并成一个有序表,称为二路归并. 归并排序算法稳定,数组需要O(n)的额外空间,链表需要O(log(n))的额外空间,时间复杂度为O(nlog(n)),算法不是自适应的,不需要对数据的随机读取. 工作原理: 1.申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后

PHP中数组的三种排序方法

说明:找到最大的数,排列到最后面,然后继续找 例: $arr = array(3,5,-1,0,2); for($i=0;$i<count($arr)-1;$i++){ for($j=0;$j<count($arr)-1-$i;$j++){ if($arr[$j]>$arr[$j+1]){ $temp = $arr[$j]; $arr[$j]=$arr[$j+1]; $arr[$j+1]=$temp; } } } 理解: 3,5,-1,0,2 //从第一个数开始往后比较,如果比后面的数大

常用的三种排序算法

#快速排序 def QuickSort(arr,left,right): """ arr: the array needed to sort left: the start index right: the end index """ if(left>=right): return ; base = arr[left]; i = left; j = right; while(i<j and arr[j]>=base): j =

简单的三种排序

桶排序:思路是,申请足够数量的空间去存放可能出现的值,循环所有的值,把对应值得地方进行标记,然后依据值得大小输出排序的顺序. 例子:2 5 8 6 1 4 申请数组a[8] 出现一个数,a[那个数] = 1: 最后循环数组,值为1的输出即可. 冒泡排序:思路是,不停的比较前后两个数,如果顺序不对就交换,每次都在大的数放在后面,每一次循环就能把最大的数冒出来. 例子:2 5 8 6 1 4 比较 2 5,正常,不动 比较 5 8,正常,不动 比较 8 6,不对,交换 比较 8 1,不对,交换 比较

Python三种排序算法

冒泡排序: def bubble_sort(lists): # 冒泡排序 count = len(lists) for i in range(0, count): for j in range(i + 1, count): if lists[i] > lists[j]: #判断后值是否比前置大,如果大就将其交换 lists[i], lists[j] = lists[j], lists[i] return lists res=bubble_sort([1,209,31,4,555,6,765,9,

7.20 函数III&amp;三种排序 Day13

1.选择排序 将某个特定值有序的放置在最终位置上---外层循环控制最终位置的序号,内层循环从外层循环序号处向后遍历,找到最小值. 2.插入排序 插入排序将某个特定值插入到值列的某个子集中,并重复该过程---外层循环控制要插入的数据(从第二个数到最后一个),内层循环控制前面已排好序的的值后移. 3.冒泡排序 重复比较相邻的两个元素,并在必要的时候交换双方位置.---外层循环控制每次冒泡到达的最终位置,内层循环交换元素