加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

关于数据的排序

发布时间:2020-12-16 23:24:38 所属栏目:大数据 来源:网络整理
导读:有时候,我们需要队一组数据进行排序,比如学号,ID,身份证,创建时间等等 在VisualBasic中,我们可以用AddItem方法,将数据逐一添加到ListBox中, 然后设置它的sorted属性为True,这种方法虽然有点笨,但是简单。 然而,有时候我们要处理大量的数据,问题

有时候,我们需要队一组数据进行排序,比如学号,ID,身份证,创建时间等等

在VisualBasic中,我们可以用AddItem方法,将数据逐一添加到ListBox中,

然后设置它的sorted属性为True,这种方法虽然有点笨,但是简单。

然而,有时候我们要处理大量的数据,问题就来了。比如一万 十万 上百万,我们

知道LIST控件的INDEX是 INTEGER 也就是0-32767,还有就是效率的问题。

我们通常用的方法就是冒泡法排序:

冒泡法是形象的说法,将数据两个两个的比较,将符合条件的冒出来,再和下一个比较

再冒出来,这样只找到最大值,通过两重循环,就完成排序了,VB代码:

public function SortArray(byval lng() as long)

dim lngMax as long'定义一个变量来存储最大值,这个就是泡泡

dim i as long,j as long

fori = 0 to ubound(lng)

for j = ubound(lng) to 0 '从最后开始

If lng(j) <lng(j - 1) Then'如果前一个比它小
lngMax = lng(j) '最大的就是他
lng(j) = lng(j - 1)'他变成前一个
lng(j - 1) = lngMax'前一个变成最大 也就是把最大的放到前面来
End If

next j

next i '一次循环 最大的到第一 N次循环 就从最大到最小排列

end function

不要帖代码,真正自己写就写不出来,重要的是方法。

其实第二个for 也可以写成 for j = ubound(lng) to i,因为经过I次循环,前面I个都是从大到小的了。

如果你还不明白,建议找个数组,然后按F8 单步调试,看他的运行过程.

下面是[Visual ]C++的代码,内容是一样的,我就不说了,VC环境下:

F9 设置断点
F5 直接调试运行
F10 单步调试运行
F11 碰到调用函数进入函数体

voidSortArray(long lng[],long n)

{

longlngMax = 0;

long i = 0;long j = 0; //也可以long i,j;

for(i = 0;i<=n;i++)

{

for (j =n;j>=0;j--)

{

If lng[j] <lng[j - 1];

{lngMax = lng[j];

lng[j] = lng[j - 1];

lng[j - 1] = lngMax;
}

}

}

}

n 是数组上标,目前对获得C++中数组个数的方法不是很清楚,指针和MFC类

还不熟悉,对于sizeof(lng)/sizeof(long)似乎不对,大家有什么又简单又快

又好的方法不如拿出来讨论讨论。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读