代码1:试图利用 strreverse 取反,但失败-----局限性太大
-
好像没有数组直接反转的 函数
-
我尝试利用strreverse转一下看看
-
这个字符串取反strreverse,连10都变01,不可行,不是按单个元素取反序的。
-
局限性较大
-
少数情况,每个element 都是但字符的 但数字字母的也许可用。
Sub jackma_arrtest1()
'好像没有数组直接反转的 函数
'我尝试利用strreverse转一下看看
Dim arr1
arr1 = Array(1, 2, 3, 4, 5, 5, 5, 8, 9, 10, "5")
arr2 = Join(arr1, "-")
Debug.Print "arr2是变成了-相连的字符串", arr2
arr3 = StrReverse(arr2)
Debug.Print "arr2是取反的字符串"; arr3
arr4 = Split(arr3, "-")
For i = LBound(arr4) To UBound(arr4)
Debug.Print arr4(i)
Debug.Print "很遗憾,这个字符串取反,连10都变01,不可行,不是按单个元素取反序的"
End Sub
代码2 成功代码: 我的想法就是 index反过来 从高到低
两种思路有小差异,都可以
- 思路1:直接把原数组,倒序,写入另外一个新数组
- 思路2:原数组,正序,倒着写入一个新数组---但这个要注意,写完了才能全部展示,否则错误
Sub ponymago1()
Dim arr1()
Dim arr2()
Dim arr3()
arr1 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
ReDim arr2(UBound(arr1) - LBound(arr1)) '如果不 redim 下面使用时会报错越界
ReDim arr3(UBound(arr1) - LBound(arr1)) '如果不 redim 下面使用时会报错越界
k = 0
For i = UBound(arr1) To LBound(arr1) Step -1
Debug.Print "arr1(" & i & ")=" & arr1(i); " ";
arr2(k) = arr1(i)
Debug.Print "arr2(" & k & ")=" & arr2(k)
k = k + 1
Debug.Print
j = 0
' Debug.Print UBound(arr1)
' Debug.Print LBound(arr1)
' Debug.Print UBound(arr1) - LBound(arr1) + j
For i = LBound(arr1) To UBound(arr1)
arr3(UBound(arr3) - LBound(arr3) + j) = arr1(i)
Debug.Print "arr3(" & UBound(arr3) - LBound(arr3) + j & ")=" & arr3(UBound(arr3) - LBound(arr3) + j)
j = j - 1
Debug.Print
For i = LBound(arr3) To UBound(arr3)
Debug.Print "arr3(" & i & ")=" & arr3(i)
End Sub
代码3:正确逆序排列了2维数组
Sub charleszhang1()
Dim arr2()
arr1 = Range("d1:g3")
'Debug.Print LBound(arr1, 1)
'Debug.Print UBound(arr1, 1)
'Debug.Print LBound(arr1, 2)
'Debug.Print UBound(arr1, 2)
'会先按第1列,第2列,数据逐步陈列数据
For Each x In arr1
Debug.Print x;
Debug.Print
For m = LBound(arr1) To UBound(arr1)
For n = LBound(arr1, 2) To UBound(arr1, 2)
Debug.Print arr1(m, n);
Debug.Print
Debug.Print
i1 = LBound(arr1)
ReDim arr2(LBound(arr1, 1) To UBound(arr1, 1), LBound(arr1, 2) To UBound(arr1, 2))
For i = LBound(arr1, 1) To UBound(arr1, 1)
j1 = UBound(arr1, 2)
For j = LBound(arr1, 2) To UBound(arr1, 2)
' arr2(i1, j1 + UBound(arr2, 2) - LBound(arr2, 2)) = arr1(i, j)
arr2(i1, j1) = arr1(i, j)
j1 = j1 - 1
' arr2(i, j) = arr1(i, j)
i1 = i1 + 1
Debug.Print
For x = LBound(arr2) To UBound(arr2)
For y = LBound(arr2, 2) To UBound(arr2, 2)
Debug.Print arr2(x, y);
Debug.Print
Debug.Print
End Sub
For x = LBound(arr1) To UBound(arr1)
For y = LBound(arr1, 2) To UBound(arr1, 2)
Debug.Print arr1(x, y);
Debug.Print
Debug.Print
'ReDim arr2(3, 4)
ReDim arr2(LBound(arr1, 1) To UBound(arr1, 1), LBound(arr1, 2) To UBound(arr1, 2))
i1 = LBound(arr2)
For i = LBound(arr1, 1) To UBound(arr1, 1)
j1 = LBound(arr2, 2)
For j = UBound(arr1, 2) To LBound(arr1, 2) Step -1
arr2(i1, j1) = arr1(i, j)
Debug.Print arr2(i1, j1);
j1 = j1 + 1
i1 = i1 + 1
Debug.Print
End Sub
代码4:EXCEL表,逆序排列数据
Sub test5()
arr1 = Range("d1:g3")
For i = LBound(arr1, 1) To UBound(arr1, 1)
k = 0
l = 12
For j = LBound(arr1, 2) To UBound(arr1, 2)
' Cells(1, 9).Resize(UBound(arr1), UBound(arr, 2)) = arr1(i, j)
Cells(i, 9 + k) = arr1(i, j)
Cells(i + 5, l) = arr1(i, j)
k = k + 1
l = l - 1
End Sub
代码1:试图利用 strreverse 取反,但失败-----局限性太大好像没有数组直接反转的 函数 我尝试利用strreverse转一下看看 这个字符串取反strreverse,连10都变01,不可行,不是按单个元素取反序的。 局限性较大 少数情况,每个element 都是但字符的 但数字字母的也许可用。Sub jackma_arrtest1()'好像没有数组直接反...
思路三:交换前后两个数。
思路一:数组倒序输出
/int[]nums={1,2,3,4,5}; For(int i= nums.length-1;i >= 0;i- -) Printf(“%d”,a[i]);/
思路分析:对于一个给定长度与数组值的数组,实现其倒序输出只需利用循环将最大数组下标依次递减输出即可。
思路二:定义一个新数组,倒序赋值
/*int[]nums = {1,2,3,4,5};
Int[]newnums = n
快速排序是最常见的排序之一,其排序方式容易理解,排序代码也容易实现,排序速度快,很受欢迎.
首先在了解快速排序之前我们先了解一下冒泡排序,冒泡排序是相邻元素之间两两对比,按小数前大数后的规律调整两数的位置,经过多轮对比以后,即可完成排序.宏观来看,其实就是大数往后小数往前的一种排序方式,微观上冒泡排序是一个个的对比.快速排序是冒泡排序的改进版型,快速排序其实是将整个数据串以一个基准点分成大小两边,宏观上看也是大数往后小数往前,微观上,快排相对于冒泡一个个的对比而言是一种”批量操作”了.
现在我们来看看快
//将num1[0],num2[0]设置为返回结果
public class Solution {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
int length = array.length;
我们平时用的表格排序,只相对来说是在在表格中的升序降序。今天就好奇如果系统中实现排序
他是怎么实现的呢。
经过一番折腾查找,真是一看吓一跳,真是感觉蚂蚁看大象,发现排序分为:
今天仅整理了最简单的两种排序。。。
先来看下定义和实现的方法吧。
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据
求逆序数和排序的思路是类似的,稳定的排序算法都可以用来计算逆序数。
最直接的方法,采用冒泡排序和插入排序的思路,一共需要遍历(n-1)*(n-2)次,比较慢。
利用归并排序的思想加速这个过程。一个序列的逆序数等于它的两个递归子过程产生的逆序数与合并过程产生的逆序数之和。在合