作业帮 > 综合 > 作业

谁能说明冒泡排序和选择排序在VF中的示例,还有那个次数是?

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/06/25 16:52:41
谁能说明冒泡排序和选择排序在VF中的示例,还有那个次数是?
谁能说明冒泡排序和选择排序在VF中的示例,还有那个次数是?
初始关键字 [49 38 65 97 76 13 27 49]
第一趟排序后 13 〔38 65 97 76 49 27 49]
第二趟排序后 13 27 〔65 97 76 49 38 49]
第三趟排序后 13 27 38 [97 76 49 65 49]
第四趟排序后 13 27 38 49 [76 97 65 49 ]
第五趟排序后 13 27 38 49 49 [97 65 76]
第六趟排序后 13 27 38 49 49 65 [97 76]
第七趟排序后 13 27 38 49 49 65 76 [97]
最后排序结果 13 27 38 49 49 65 76 97
[编辑本段]C语言过程
v
for(j=0;j冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面.即首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后.重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数.如此下去,直至最终完成排序.
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序.
用二重循环实现,外循环变量设为i,内循环变量设为j.外循环重复9次,内循环依次重复9,8,...,1次.每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i, j的值依次为1,2,...10-i.
冒泡排序是稳定的.
产生
在许多程序设计中,我们需要将一个数列进行排序,以方便统计,常见的排序方法有冒泡排序,二叉树排序,选择排序等等.而冒泡排序一直由于其简洁的思想方法和比较高的效率而倍受青睐.
排序过程
设想被排序的数组R〔1..N〕垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止.
算法示例
49 13 13 13 13 13 13 13
38 49 27 27 27 27 27 27
65 38 49 38 38 38 38 38
97 65 38 49 49 49 49 49
76 97 65 49 49 49 49 49
13 76 97 65 65 65 65 65
27 27 76 97 76 76 76 76
49 49 49 76 97 97 97 97
Procedure BubbleSort(Var R : FileType) //从下往上扫描的起泡排序//
Begin
For I := 1 To N-1 Do //做N-1趟排序//
begin
NoSwap := True; //置未排序的标志//
For J := N - 1 DownTo 1 Do //从底部往上扫描//
begin
If R[J+1]< R[J] Then //交换元素//
begin
Temp := R[J+1]; R[J+1 := R[J]; R[J] := Temp;
NoSwap := False
end;
end;
If NoSwap Then Return//本趟排序中未发生交换,则终止算法//
end
End; //BubbleSort//
该算法的时间复杂性为O(n^2),算法为稳定的排序方
[编辑本段]冒泡排序代码
C
void bubble_sort(int a[], int n)
{
int i = n-1; bool change = true;
for (; i>=1&&change; --i)
{
change = false;
for (int j = 0; ja[j+1])
{
int nTemp = a[j+1];
a[j+1] = a[j];
a[j] = nTemp;
change = true;
}
}
}
}
C++
#include
#define LEN 9
using namespace std;
int main(){
int nArray[LEN];
for(int i=0;i
Ruby
def bubble(arr)
(arr.length-1).downto(1) do |j|
a1 = arr.dup
j.times do |i|
if arr > arr[i+1]
arr,arr[i+1] = arr[i+1],arr
end
end
break if a1 == arr
end
arr
end
Java
static void BubbleSort(int a []){
int temp=0;
for (int i = 0; i < a.length-1 ; i++) {
for (int j = 0; j < a.length - i - 1; j++){
if (a[j]>a[j + 1]){ //把这里改成大于,就是升序了
temp=a[j];
a[j]=a[j + 1];
a[j + 1]=temp;
}
}
}
}

Visual Basic

Option Explicit
Private Sub Form_click()
Dim a, c As Variant
Dim i As Integer, temp As Integer, w As Integer
a = Array(12, 45, 17, 80, 50)
For i = 0 To UBound(a) - 1
If (a(i) > a(i + 1)) Then '若是递减,改为a(i)