-
2020-11-30 00:22:44
经过视频的学习,总结了一下,大神们请指教。。。。
如果要将数组中的数字按照从小到大的顺序排列。
完成思路:将最小的数字放在数组的第一项,将第二小的数组放在第二项,一直重复,知道完成。
那么如何将最小的数字放在数组索引为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;
}
}
}
上面总结的一些可能会有错误,大神们看到了麻烦告知,感激不尽。。。
更多相关内容 -
js对数组中的数字从小到大排序实现代码
2020-10-27 23:00:59对数组中的数字从小到大排序,很多时候需要用的多,需要的朋友可以参考下 -
python 统计数组内数字出现次数,按照次数从大到小,若次数相同,则按照数字从小到大排序
2020-11-23 23:21:58题目我忘了,大概意思就是文章...比如说:输入:261 1 1 4 2 7101 1 2 2 2 3 3 3 9 5输出:1 1 1 2 4 72 2 2 3 3 3 1 1 5 9写这个题目主要是因为里面包含了python里两个比较好的东西,一个是count,一个是dict按照...题目我忘了,大概意思就是文章题目说的,输入第一行输入n是测试样例个数,然后每一个样例,第一行输入length表示数组长度,第二行输入表示数组的每一个元素。比如说:
输入:
2
6
1 1 1 4 2 7
10
1 1 2 2 2 3 3 3 9 5
输出:
1 1 1 2 4 7
2 2 2 3 3 3 1 1 5 9
写这个题目主要是因为里面包含了python里两个比较好的东西,一个是count,一个是dict按照item排序,并且多条件排序。
首先是count()。
很简单,我们想要用count()函数来统计数组中的每一个元素出现的次数,那就首先用一个set来保存数组中都出现过哪些不重复的元素,然后对set中每一个元素用一个count,保存在一个字典中,比如这样:
arr = [1, 1, 2, 2, 2, 3, 3, 3, 9, 5]
count_dict = {}
for i in set(arr):
count_dict[i] = arr.count(i)
print(count_dict)
输出就是:
{1: 2, 2: 3, 3: 3, 5: 1, 9: 1}
这就是我们统计出现次数的字典。
下面是dict的sort
现在有了这个字典了,我们要按照字典的值进行排序,而且要实现多条件排序,这里是双条件排序,也就是说我们首先按照出现次数从大到小排序,然后如果出现次数相同,我们就按照键值从小到大排序。
这边主要参考了这篇文章,写的不错:
主要用到了一个lambda,这是用来声明匿名函数的,结合sort使用可以很方便的对诸如元组tuple、字典等按照不同位置的值进行排序。
举个栗子:
result = sorted(dict.items(), key=lambda item: item[1])
这句话就表明按照字典dict的值进行排序(默认是从小到大排序的),如果要按照dict的键进行排序,那么后面的就是item[0]。这里需要提到一点,前面提到这个方法可以对dict和tuple按照特定位置的值进行排序,但是如果是dict的话,是不能直接排序的,要先dict.items()获取可遍历对象,其实也就是返回了一个个的tuple。
原始的是默认升序的,要反转一下。另外,现在完成了首先按照值进行排序,那么在值相同的时候按照键进行排序怎么做呢?就在item:后面用一个元组来替代item[1],也就是(-item[1], item[0]),这也就是说,按照值从大到小(写个负),键从小到大排序。
result = sorted(count_dict.items(), key= lambda item: (-item[1], item[0]))
这样输出排序后的结果就是:
[(2, 3), (3, 3), (1, 2), (5, 1), (9, 1)]
如果想要按照键也从大到小,那么就是item: (-item[1], -item[0]),结果如下:
[(3, 3), (2, 3), (1, 2), (9, 1), (5, 1)]
Post Views:
1,823
-
C++选择排序法实现数字从小到大排列
2018-09-28 21:09:21#include #include <time.h> using namespace std; ...void srandData(int *, int );...//选择排序具体实现函数 void swap(int *, int *);//两个数字实现交换的函数 void display(int *, int );...#include <iostream> #include <time.h> using namespace std; void srandData(int *, int );//产生随机数的函数 void selectSort(int *, int );//选择排序具体实现函数 void swap(int *, int *);//两个数字实现交换的函数 void display(int *, int );//在屏幕输出结果函数 int main() { const int N = 10;//定义常数 int arr[N];//定义数组 srandData(arr, N); selectSort(arr, N); display(arr, N); return 0; } void srandData(int *a, int n) { srand(time(NULL)); for(int i = 0; i < n; i++) { a[i] = rand() % 50;//取50以下的数字 cout << a[i] << " "; } cout << endl; } void swap(int *b, int *c) { int temp = *c; *c = *b; *b = temp; } void selectSort(int *e, int n) { for(int i = 0; i < n - 1; i++) { int min = i; for(int j = i + 1; j < n; j++) { if(e[min] > e[j]) { min = j;//记下当前数字的位置 } } if(min != i) { swap(&e[min], &e[i]); } } } void display(int *d, int n) { for(int i = 0; i < n; i++) { cout << d[i] << " "; } cout << endl; }
-
对数字型数组进行从小到大排序
2019-09-14 12:59:13基本算法quicksort来对int型arr进行从小到大的排序。。 -
怎么实现数字从小到大的排列
2020-12-28 21:39:48该楼层疑似违规已被系统折叠隐藏此楼查看此楼/*冒泡排序:让数组中的元素两两比较(第i号与第i+1号比较),如要把数组num元素按从小到大排序:* 先拿第0号元素和第1号比较,若nums[0]>nums[1],则把二者互换位置int...该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/*冒泡排序:让数组中的元素两两比较(第i号与第i+1号比较),如要把数组num元素按从小到大排序:
* 先拿第0号元素和第1号比较,若nums[0]>nums[1],则把二者互换位置
int[]nums={9,8,7,6,5,4,3,2,1};
* 第一趟:
* nums[0]为9,nums[1]为8,9>8,将nums[0]和nums[1]互换位置。于是nums[0]变成8,nums[1]变成9
再拿nums[1]和nums[2]比较,9>7,将nums[1]和nums[2]互换位置。于是nums[1]变成7,nums[2]变成9
再拿nums[2]和nums[3]比较,9>6,将nums[2]和nums[3]互换位置。于是nums[2]变成6,nums[3]变成9
* 再拿nums[3]和nums[4]比较,9>5,将nums[3]和nums[4]互换位置。于是nums[3]变成5,nums[4]变成9
* 再拿nums[4]和nums[5]比较,9>4,将nums[4]和nums[5]互换位置。于是nums[4]变成4,nums[5]变成9
* 再拿nums[5]和nums[6]比较,9>3,将nums[5]和nums[6]互换位置。于是nums[5]变成3,nums[6]变成9
* 再拿nums[6]和nums[7]比较,9>2,将nums[6]和nums[7]互换位置。于是nums[6]变成2,nums[7]变成9
再拿nums[7]和nums[8]比较,9>2,将nums[7]和nums[8]互换位置。于是nums[7]变成2,nums[8]变成9
第一趟共比较交换了8次,第一趟后的顺序为:8,7,6,5,4,3,2,1,9
* .......
* .......
* int[]nums={9,8,7,6,5,4,3,2,1};
* 第1趟:8,7,6,5,4,3,2,1,9 交换了8次 i=0, j=8
* 第2趟:7,6,5,4,3,2,1,8,9 交换了7次 i=1, j=7
* 第3趟:6,5,4,3,2,1,7,8,9 交换了6次 i=2, j=6
* 第4趟:5,4,3,2,1,6,7,8,9 交换了5次 ....j=nums.Length-1-i
* 第5趟:4,3,2,1,5,6,7,8,9 交换了4次
* 第6趟:3,2,1,4,5,6,7,8,9 交换了3次
* 第7趟:2,1,3,4,5,6,7,8,9 交换了2次
* 第8趟:1,2,3,4,5,6,7,8,9 交换了1次
*/
int[] nums = { 9, 8, 7, 6, 5, 4, 3, 2, 1 };
for (int i = 0; i < nums.Length-1; i++)
{
for (int j = 0; j < nums.Length -1-i;j++ )
{
if (nums[j] > nums[j + 1])
{
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j+1] = temp;
}
}
}
foreach (var n in nums)
{
Console.WriteLine(n);
}
-
【C语言】10个数字按照从小到大排序(选择法)
2022-05-06 10:31:35#include <stdio.h> main() { int a[10]={5,2,4,25,13,11,7,8,0,12}; int i,j,t; for(i=0;i<10;i++) for(j=i+1;j<10;j++) if(a[i]>...i++) //输出排序好的每个数组元素 { pr. -
用python实现将数组元素按从小到大的顺序排列方法
2020-09-20 07:56:34今天小编就为大家分享一篇用python实现将数组元素按从小到大的顺序排列方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
用JAVA输入数字从小到大排序
2020-12-28 16:19:24用Java设计一个程序,比较3个数的大小,按照从小到大的顺序输出 示例代码: public class Employee { public static void main(String args[]){ ArrayList sites = new ArrayList(); Scanner scanner = new Scanner... -
三个数字排序问题,按照从小到大的思路排除结果
2021-03-10 02:12:47题目:输入三个整数 x,y,z,请把这三个数由小到大输出。程序分析:我们想办法把最小的数放到 x 上,先将 x 与 y 进行比较,如果 x>y 则将 x 与 y 的值进行交换,然后再用 x 与 z 进行比较,如果 x>z 则将 x 与... -
将三个数字从小到大排列(或者从大到小排列)c及python
2020-11-21 00:20:21将三个数字从小到大排列(或者从大到小排列)c及python很基础的算法题输入三个整数x,y,z,请把这三个数由小到大输出。c:一般情况下,我们是用三个if来进行一个数字的变化,很简单的依次排序。代码如下:#includeint... -
EXCEL表格数据从小到大-Excel如何从小到大排列顺序
2020-12-31 08:38:26excel表格中的数字怎么按从小到大的排序=rank(A1,A:A,0)此函数有3数,RANK(number,ref,order)Number:是要知道等级的数字;Ref:是数值阵列或数值位...Excel如何从小到大排列顺序在EXCEL中实现数字排序的具体方下... -
java利用数组来实现多个数字从小到大排序
2020-12-01 20:11:05用户输入任意个数字,使这些数字从小到大进行排列 二、代码 1.import的调用 import java.util.Arrays; import java.util.Scanner; 2.基本作用实现代码 代码如下(示例): int sum; Scanner scanner = new ... -
【C语言】10个数字按照从小到大进行排序(冒泡法)
2022-05-05 17:07:02(冒泡法)10个数字按照从小到大进行排序 -
对数组中的数字从小到大排序
2018-03-22 19:22:46按照数值的大小对数字进行排序,要实现这一点,就必须使用一个排序函数: <!DOCTYPE html> function sortNumber(a, b) { return a - b } var arr = new Array(6) arr[0] = ... -
将数组的数字按照从小到大的顺序进行排序
2021-08-12 20:55:50#include<stdio.h> #include<math.h> main() { int i,a[5]={2,4,1,3,6},temp; for(i=0;i<5;i++) { for(int j=i;j<5;j++) { if(a[i]>a[j]) { temp=a[j];...} -
C语言程序:一组没规律的数字,从小到大排列
2011-03-31 10:27:05部分代码: #include #include #define N 5 -
python字符串从小到大排序
2021-03-06 17:44:58z),并且重def char_cmp(a, b): #实现你的比较规则, 分太少,不值为你写这个函数 sorted(a, char_cmp)python 字符串列表中根据字符串内的数字进行排序。python小白 现在有一个列表A A=['abc 15','abd 13','abe 9','a... -
冒泡排序法按照从小到大输出
2015-01-12 20:13:54编写程序实现经典的冒泡排序法 本程序中以初始化过的数组为例 -
JS_使用冒泡排序,将数组中的数字从小到大排序
2020-07-02 08:10:59冒泡排序:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经... -
直接插入排序将数字从小到大排序
2021-04-22 22:16:40#include using namespace std; void InsertSort(int a[], int n) { for (int j = 1; j ; j++) { cout [j]; int key = a[j]; //待排序第一个元素 int i = j - 1;... 以此类推,我们就能完成从前到后的排序 -
c++实现数组中数字从大到小和从小到大的排序
2021-05-28 20:07:48c++实现数组中数字从大到小和从小到大的排序 #include <iostream> using namespace std; void Print(int arr[], int length) { for (int i = 0; i < length; i++) { cout << arr[i] << " ... -
用汇编对数字从小到大排序
2011-06-05 14:47:40用汇编语言编写,对十个数进行从小到大排序 -
python怎么从小到大排列
2020-12-08 04:03:01python提供了对list排序两种方法1、使用list内置函数sort排序list.sort(key=None,reverse=False)eg:In[57]:l=[27,47,3,42,19,9]In[58]:l.sort()In[59]:lOut[59]:[3,9,19,27,42,47]上面这种是直接对l列表里面的元素... -
C语言冒泡排序将一个数组按照从小到大进行排序
2021-05-22 17:54:59例如 int a[10] = {0,5,2,3,6,9,8,7,4,1}对其10个整数由小到大进行排序思想:实现一:#includeint main(){int i = 0;int a[10] = {0,5,2,3,6,9,8,7,4,1};int j = 0;int tmp = 0;int m = sizeof(a) / sizeof(a[0]); /... -
java通过输入数字然后将这些数字从小到大排序输出
2020-04-06 22:56:20java通过输入数字然后将这些数字从小到大排序输出 可自定义你要排几个数字, package SortArray; import java.util.Scanner; public class SortArray { public static void main(String[] args) { // TODO ... -
怎么用python while循环排列数字从小到大
2022-03-13 13:56:14输出每个数字的平方,从小到大的顺序。 只能用while循环,而且不能用内置函数(len()这个可以 比如输入:-12 -7 1 3 20 输出:1 9 49 144 400 该怎么把输出后的顺序排列啊,就是怎么把负数的平方按照顺序排到后面... -
C++用快速排序法对一组数据进行从小到大排列
2018-09-29 22:22:22快速排序法:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据要小,然后再按此方法对这两部分数据分别进行快速排序(此过程可以用到函数递归的方法)。 #include #... -
php数组排序从小到大函数
2021-05-08 01:07:42推荐操作系统:windows7系统、PHP5.6、DELL G3电脑1、说明冒泡排序是一个简单的排序算法。这一算法的名称来自于越小的元素将通过交换慢慢浮到数列的顶部。2、使用方法对比相邻的元素。如果第一个比第二个大,就换两...