精华内容
下载资源
问答
  • Python实现把列表里的数字从小到大的顺序排列

    万次阅读 多人点赞 2019-04-13 19:20:09
    拿出列表里第0个元素,把它赋给一个叫做“最小值”变量,然后用这个变量去跟后面每个数字一一对比,如果碰到比它小,就把那个新发现数字赋给“最小值”变量,否则维持原状。 这样一轮下来,就能找到...

    一、自己造轮子

    第一种方式的思路:

    拿出列表里的第0个元素,把它赋给一个叫做“最小值”的变量,然后用这个变量去跟后面的每个数字一一对比,如果碰到比它小的,就把那个新发现的小数字赋给“最小值”变量,否则维持原状。

    这样一轮下来,就能找到当前这些数字里的最小值,也就是应该在升序的列表中排在队首的元素。而这一轮当中,我们进行了“”元素总个数-1”次比较。紧接着,把这个最小的元素从原列表中删除。再用同样的方法,找出剩下的数字里最小的。

    列表里一共有10个数字的话,上述过程就应该重复9次。因为只剩下一个元素的时候就不需要比较了,它自然是最大的,排在队尾。

    这种排序方法叫做“选择排序”。算法的复杂度是O(n²)。

    lst=[2,56,4,9,17,30,7,8,24,1]
    order=[]
    
    for j in range(10,1,-1):
    #j代表列表里当前的元素个数
        smallest=lst[0]
        for i in range(1,j):
        #i代表元素的索引,也就是拿第0个元素和列表里的第1个比较,第2个比较,一直比到第j-1个,完成一轮
            if smallest<=lst[i]:
                pass
            else:
                smallest=lst[i]
    
        lst.remove(smallest)
        #从原列表中移除已经确认的当前最小元素
        order.append(smallest)
        #把这个当前最小元素追加到升序列表中
    order.append(lst[0])
    #列表里最后剩下的那个元素追加到队尾
    print(order)  

    第二种方式的思路:

    我们从列表中找到一个数字作为基准,然后去查看其它数字,比它小的放到一个新列表里,并把这个新列表放到基准数字的左边,比它大的数字放到另外一个列表里,并把这个装满大数字的列表放到基准数字的右边。一种非常理想的情况是,小数字列表里的元素本身就已经按照升序排好了,大数字列表里的元素也本身就按照升序排好了,那我们只要把小数字列表、基准数字、大数字列表拼接到一起就完成了全部数字的排序。而这个理想情况也是需要我们自己去实现的。我们要不断重复找基准数字、把其他数字分为小数字阵营和大数字阵营的工作,直到什么时候结束呢?直到最后切分出来的小数字/大数字列表里只有一个元素或一个元素都没有就可以停止了。

    现在我们有了基线条件,还有了需要不断重复的工作。一个词呼之欲出——递归!

    其实这种排序方式就是“快速排序”。算法的复杂度是O(n log n)

    def quicksort(arr):
        '''快速排序函数'''
        if len(arr)<2:
            return arr
            #上面是描述基线条件的部分,当列表里的元素不足两个时,直接原样返回
        else:
            pivot=arr[0]
            #把列表开头的元素当做基准数字
            less=[]
            greater=[]
            #上面创建了用于存放小于基准数字和大于基准数字的元素的空列表
            for i in arr[1:]:
                if i<=pivot:
                    less.append(i)
                else:
                    greater.append(i)
                    #上面是遍历列表里除掉基准数字以外的数字,按照我们的规定分别存放到两个列表里
            return quicksort(less)+[pivot]+quicksort(greater)
            #返回的就是我们需要的顺序,这里记得要把基准数字放到一个单独的列表里,否则拼接会失败
    
    print(quicksort([23,9,55,33,24,15]))
    #随便找个无序列表试一试我们的函数好不好用
        
    
    

    二、用前人造好的轮子

    lst=[2,56,4,9,17,30,7,8,24,1]
    lst.sort()
    #sort是列表的一个方法,默认会把列表里的数字按照升序排列
    print(lst)

    *********************************************************************************************************************

    如果这篇博文帮到了你,就请给我点个吧(#^.^#)

    有疑问也欢迎留言~博主可nice啦,在线秒回ヾ(◍°∇°◍)ノ゙

    展开全文
  • 如果要将数组中的数字按照从小到大的顺序排列。完成思路:将最小的数字放在数组的第一项,将第二小的数组放在第二项,一直重复,知道完成。那么如何将最小的数字放在数组索引为0的位置呢?示例:for(int j = i+1;j...

    经过视频的学习,总结了一下,大神们请指教。。。。

    如果要将数组中的数字按照从小到大的顺序排列。

    完成思路:将最小的数字放在数组的第一项,将第二小的数组放在第二项,一直重复,知道完成。

    那么如何将最小的数字放在数组索引为0的位置呢?

    示例:

    for(int j = i+1;j < arrays.Length;j++)

    {

    if (arrays[0] > arrays[j])

    {

    int temp = arrays[0];

    arrays[0] = arrays[j];

    arrays[j] = temp;

    }

    }

    实现方法:把第一个位置的数字拿出来依次和后面位置的数字进行比较,如果后面位置的数字大,则交换位置。

    代码实现分析:重复的动作,如果索引为0的数字比索引为j的数字大,则交换。j的取值范围是1-arrays.Length-1.

    int i = ?;//当前处理的数组索引位

    for(int j = i + 1;j < arrays.Length;j++)

    {

    if (arrays[i] > arrays[j])

    {

    int temp = arrays[i];

    arrays[i] = arrays[j];

    arrays[j] = temp;

    }

    }

    由于示例中的0表示为当前处理的数组索引,则提出来形成一个变量i,变量j的位置则应该是从索引i的下一项开始。

    示例:用交换顺序来实现对int类型的数据arrays从小到大排序:

    for(int i = 0;i < arrays.Length - 1; i++)

    {

    for(int j = i + 1;j < arrays.Length;i++)

    {

    if (arrays[i] > arrays[j])

    {

    int temp = arrays[i];

    arrays[i] = arrays[j];

    arrays[j] = temp;

    }

    }

    }

    同理,对double类型的数组arrays从小到大排序示例:

    for(int i = 0;i < arrays.Length - 1;i++)

    {

    for (int j = i + 1;j < arrays.Length;j++)

    {

    if (arrays[i] < arrays[j])

    {

    double temp = arrays[i];

    arrays[i] = arrays[j];

    arrays[j] = temp;

    }

    }

    }

    上面总结的一些可能会有错误,大神们看到了麻烦告知,感激不尽。。。

    展开全文
  • 题目来源及自己的思路我时刚开始学习的小白,会的不多,在学习中发现数组在用sort()排序时并不是完全按大小顺序排列,和数字的位数还有关系,所以我想自己尝试让数组按从小到大的顺序排列,自己敲了一些代码,但是...

    题目来源及自己的思路

    我时刚开始学习的小白,会的不多,在学习中发现数组在用sort()排序时并不是完全按大小顺序排列,和数字的位数还有关系,所以我想自己尝试让数组按从小到大的顺序排列,自己敲了一些代码,但是最后还是有问题,请各位大佬解释并求纠正方法。代码如下:

    相关代码

    var box=Array(12,8,24,23,54)

    var x=box.length

    var i=0

    do{

    i=i+1;

    var name="b"+i;

    window\[name\]=box.pop();

    console.log(name);

    var x=box.length;

    }while(x>0)

    do{

    if(b1

    {if(b2

    {if(b3

    {if(b4

    {b5=b5;

    }else{var x5=b5;b5=b4;b4=x5;}}else{var x4=b4;b4=b3;b3=x4;}}else{var x3=b3;b3=b2;b2=x3;}}else{var x2=b2;b2=b1;b1=x2;console.log(box=Array(b1,b2,b3,b4,b5))}}while(b1

    你期待的结果是什么?实际看到的错误信息又是什么?

    最后输出的数组是[8, 23, 24, 54, 12],最后两个还是没按顺序排列,请指教

    展开全文
  • 如果要将数组中的数字按照从小到大的顺序排列。 完成思路:将最小的数字放在数组的第一项,将第二小的数组放在第二项,一直重复,知道完成。 那么如何将最小的数字放在数组索引为0的位置呢? 示例: for(int ...

    经过视频的学习,总结了一下,大神们请指教。。。。

    如果要将数组中的数字按照从小到大的顺序排列。

    完成思路:将最小的数字放在数组的第一项,将第二小的数组放在第二项,一直重复,知道完成。

    那么如何将最小的数字放在数组索引为0的位置呢?

    示例:

     

    for(int j = i+1;j  < arrays.Length;j++)

    {

         if (arrays[0] > arrays[j])

         {    

                 int temp = arrays[0];

                 arrays[0] = arrays[j];

                 arrays[j] = temp;

          }

    }

    实现方法:把第一个位置的数字拿出来依次和后面位置的数字进行比较,如果后面位置的数字大,则交换位置。

    代码实现分析:重复的动作,如果索引为0的数字比索引为j的数字大,则交换。j的取值范围是1-arrays.Length-1.

    int i = ?;//当前处理的数组索引位

    for(int j = i + 1;j  < arrays.Length;j++)

    {

         if (arrays[i] > arrays[j])

         {    

                 int temp = arrays[i];

                 arrays[i] = arrays[j];

                 arrays[j] = temp;

          }

    }

    由于示例中的0表示为当前处理的数组索引,则提出来形成一个变量i,变量j的位置则应该是从索引i的下一项开始。

    示例:用交换顺序来实现对int类型的数据arrays从小到大排序:

    for(int i = 0;i < arrays.Length - 1; i++)

    {

           for(int j = i + 1;j < arrays.Length;i++)

           {

                 if (arrays[i] > arrays[j])

                 {

                     int temp = arrays[i];

                     arrays[i] = arrays[j];

                      arrays[j] = temp;

                  }

               }

    同理,对double类型的数组arrays从小到大排序示例:

    for(int i = 0;i < arrays.Length - 1;i++)

    {

          for (int j = i + 1;j < arrays.Length;j++)

          {

                if (arrays[i] < arrays[j])

                {

                   double temp = arrays[i];

                   arrays[i] = arrays[j];

                   arrays[j] = temp;

                 }

           }

    }

     

     

    上面总结的一些可能会有错误,大神们看到了麻烦告知,感激不尽。。。

    转载于:https://www.cnblogs.com/xydbk/p/7076388.html

    展开全文
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼/*冒泡排序:让数组中元素两两比较(第i号与第i+1号比较),如要把数组num元素按从小到大排序:* 先拿第0号元素和第1号比较,若nums[0]>nums[1],则把二者互换位置int...
  • 将三个数字从小到大排列(或者从大到小排列)c及python 很基础算法题 输入三个整数x,y,z,请把这三个数由小到大输出。 c: 一般情况下,我们是用三个if来进行一个数字的变化,很简单依次排序。 代码如下: ...
  • 主函数代码(C++)int main(){ int i,j; Book bk[10],temp; for(i=0;i&lt;10;i++) book[i].input(); for(j=i+1;j&lt;10;j++){ if(bk[i].price&gt;bk[j].price){ temp=b[i];... b[j...
  • 冒泡排序是较为简单的一种排序方法。 冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡...这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”数列的顶端,故名。 以下是我写的代码 此程序在vs环境下运行:...
  • namespace ConsoleApplication1{/// /// Class1 摘要说明。/// class Class1{/// /// 应用程序主入口点。/// [STAThread]static void Main(string[] args){MinToMax mtm = new MinToMax();int[] array = { 1, 2,...
  • 编程菜鸟进阶-1 if语句 ...三个数字比较大小从小到大进行排列 3个数字进行比较,首先需要键盘输入三个数字,两两数字分别比较大小。此时需要if语句进行判断。 代码 #include<stdio.h> int a,b,c;
  • package demo0921; import java.util.*; public class demo1919 { public static void main(String[] args) { // TODO 自动生成方法存根 ... System.out.println("请输入三个数字:"); int a ...
  • 输入3个数字要求从小到大排列.c

    千次阅读 2018-11-27 19:36:09
    输入3个数字要求从小到大排列.c 解题思想:输入3个整型变量,用其中两个数字判断大小,如果前面那个数大于后面一个数字,用 t 做交换变量,交换两个数字的位置 #include&lt;stdio.h&gt; void main() { ...
  • #include #include #define N 10 #define len 10 int main() { char a[N][len]; int b[10]={0}; int i,n,max=-1,k,j,x; printf("请输入几个数:"); scanf("%d",&n); printf("请
  • excel表格中的数字怎么按从小到大的排序=rank(A1,A:A,0)此函数有3数,RANK(number,ref,order)Number:是要知道等级的数字;Ref:是数值阵列或数值位址,非数值忽略;Order:是指定的顺序。如果 Order为0或被省略,...
  • 已知两个已经按从小到大排列的数组,将它们中的所有数字组合成一个新的数组,要求新数组也是按照从小到大的顺序。请按照上述描述完成函数:int merge(int *array1, int len1, int *array2, int len2, int *array3); ...
  • //将三个数字按照从小到大的顺序排列 void Sort(int &a, int &b, int &c); //交换数据 void Change(int &a, int &b); void main() { int a, b, c; cout请输入三个数字:"; cin>>a; cin>>b; cin>>c;
  • #include #include &lt;time.h&gt; using namespace std; void srandData(int *, int );//产生随机数函数 void selectSort(int *, int );...//两个数字实现交换函数 void display(int *, int );...
  •  * 输入一串数字(String),按从小到大排列,比如我输入是897--&gt;7&lt;8&lt;9  */  public static void main(String[] args) {  Scanner input = new Scanner(System.in);  Stri...
  • 输入一串数字(int),按从小到大排列

    千次阅读 2018-10-28 08:58:46
     * 1,输入一串数字(int),按从小到大排列,比如我输入是897--&gt;7&lt;8&lt;9  */  public static void main(String[] args) {  Scanner input = new Scanner(System.in);  Syst...
  • 题目:输入3个数字从小到大排列显示。(不需使用数组) 解答: C# 1staticvoidMain()2{3Console.WriteLine("任意输入1个数字:");4doubled1=Convert.ToDouble(Console.ReadLine());5Console.WriteLine("任意...
  • 输入:多组字符串 ... function:将输入的字符串中对应位的字母按照字母表对应排序,对应的数字按照小到大排序 :param string: 包含字母和仅有小写字母的字符串 :return:排序好的字符串 """ list_st...
  • using System;namespace ConsoleApplication1{ /// /// Class1 摘要说明。 /// class Class1 { /// /// 应用程序主入口点。 /// [STAThread] static void Main() 
  • ASCII码值从小到大的排列顺序

    万次阅读 2015-07-01 10:40:00
    ASCII码值如下 48~57为09十个阿拉伯数字; 65~90为26个大写英文字母; 97~122号为26个小写英文字母。
  • C#把一个int数组的数字从小到大排列

    千次阅读 2007-05-29 16:17:00
    using System;namespace ConsoleApplication1{ /// /// Class1 摘要说明。 /// class Class1 { /// /// 应用程序主入口点。 /// [STAThread] static void Main(stri

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,849
精华内容 739
关键字:

从小到大的数字排列