将数组{3,7,1,6,2,4,8,5}中的元素从大到小的顺序排列,每次可以任意交换两个元素,求最少的交换次数.
来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/09/03 06:31:31
将数组{3,7,1,6,2,4,8,5}中的元素从大到小的顺序排列,每次可以任意交换两个元素,求最少的交换次数.
请写出具体的交换过程
请写出具体的交换过程
最少交换次数肯定是与8 7 6 5 4 3 2 1 不对应的数的个数再减可以形成的环的个数(因为每个环的最后一个数都不用排序的,前面都排好了,最后一个自然就序),此数组有两个环,所以是5次.
hint:环指的是例如上面数组中的1 6 5三个数虽然都不在自己应该在的位置,但他们占据了排好序后1,6,5应该占据的位置,所以可以抽象成一个环,环内换顺序就行了.同样3,2,4,8也是一个环,还有,对应好的7也可以看做是一个环,所以是8-1-1-1=5
交换过程有很多:
eg:
交换3 8 变成8 7 1 6 2 4 3 5
交换1 6 变成8 7 6 1 2 4 3 5
交换1 5 变成8 7 6 5 2 4 3 1
交换2 4 变成8 7 6 5 4 2 3 1
交换2 3 变成8 7 6 5 4 3 2 1
注意是环内交换
hint:环指的是例如上面数组中的1 6 5三个数虽然都不在自己应该在的位置,但他们占据了排好序后1,6,5应该占据的位置,所以可以抽象成一个环,环内换顺序就行了.同样3,2,4,8也是一个环,还有,对应好的7也可以看做是一个环,所以是8-1-1-1=5
交换过程有很多:
eg:
交换3 8 变成8 7 1 6 2 4 3 5
交换1 6 变成8 7 6 1 2 4 3 5
交换1 5 变成8 7 6 5 2 4 3 1
交换2 4 变成8 7 6 5 4 2 3 1
交换2 3 变成8 7 6 5 4 3 2 1
注意是环内交换
从键盘获取任意10个整数存放于c语言,数组a中,将其最小的数和最大的数对换,并输出交换后的数组元素.求
c语言,从键盘获取任意10个整数存放于数组a中,将其最小的数和最大的数对换,并输出交换后的数组元素.求
C 语言 一维整形数组将数组元素逆序存放并把交换后的数组输出 要求数组元素的输入,交换和输出分别用函数
广度优先搜索,算法给出一个由1,2,3,4,5,6组成的6位数,相邻的两个数字可以交换位置,问最少经过多少次交换,可以到
编写程序,输入一维数组的10个元素,并将最小值与第1个数交换,最大值与最后一个数交换,然后输出交换后的1
设某矩阵中各元素互不相同,设计一个函数将二维数组中的最大元素与左上角元素交换,最小元素与右下角元素
定义一个有4个元素的数组,并将0、1、2、3、4赋值给数组,扩充数组为6个元素
将一个二维数组行和列的元素交换这个代码中,b[j][i]=a[i][j]
将一个矩阵行和列的元素交换,存到另一个二维数组中,并分别输出前后两个矩阵,同时求出两个矩阵中相同元素的数目是多少?(假设
有一个 3 × 4 的矩阵(即定义一个 3 行 4 列的数组),从键盘输入其值.然后交换该矩阵(数组)中最大元素
matlab中怎么对数组列元素求和.例如,D=[1 2 3;4 5 6;7 8 9;] 求每一列元素的和.
矩阵行和列的元素交换,存到另一二维数组,分别输出前后矩阵,求出两个矩阵中相同元素的数目是多少?