VB程序代码,数据排序

VB程序代码,数据排序,第1张

Dim fenshu As Variant

Dim xuehao As Variant

Private Sub Form_Load()

Dim I As Integer

Dim J As Integer

Dim Temp As Integer

Dim S As Integer

fenshu = Array(85, 78, 65, 75, 55, 64, 74, 88, 63, 92)

xuehao = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

Text1.Text = ""码缺行

For I = 0 To 9

For J = I + 1 To 9

If fenshu(I) <fenshu(J) Then

Temp = fenshu(I): fenshu(I) = fenshu(J): fenshu(J) = Temp '学号交换

S = xuehao(I): xuehao(I) = xuehao(J): xuehao(J) = S '成绩交换

End If

Next J

Next I

For I = 0 To 9

Text1.Text = Text1.Text + CStr(xuehao(I)) + "" + CStr(fenshu(I)) + "" + vbCrLf

Next I

End Sub

注意事项

1、数组是从0开始的

2、显示的扮誉文本框Multiline属性=true

text文本框显示是迟哗:

1092

888

185

278

475

774

365

664

963

555

/*选择排序法:从小到大排列10个数并输出*/

#include<stdio.h>

#define N 10       //可修改输入个数

void main()

{

    int i,a[N],t,j

    for(i=0i<Ni++) scanf("%d",&a[i])   //输入

    for(j=1j<Nj++)           //N次比较

        for(i=0i<ji++)         //每趟中比j次  

            if(a[i]>a[j])            //与a[i]后面的元素进行比较

            {

                t=a[i]a[i]=a[j]a[j]=t

            }

          码行漏  printf("排序后:\n")

     带谨       迟烂for(i=0i<Ni++) printf("%d ",a[i])

            printf("\n")

}

#include<stdio.h>

#include<stdlib.h>

#include <math.h>

#define L 8 //排序元素个数

#define FALSE 0

#define TRUE 1

typedef struct

{

int key

char otherinfo

}RecType

typedef RecType Seqlist[L+1]

int num //定义排序趟数的全局变量

Seqlist R

//直接插入排序

void Insertsort()

{

int i,j,k,m=0

printf("岩祥\n\t\t原始数据为(按回车键开始排序):\n\t\t")

for(k=1k<=Lk++)

{

printf("%5d",R[k].key)

}

getchar()

printf("\n")

for(i=2i<=Li++)

{

if(R[i].key<R[i-1].key)

{

R[0]=R[i]

j=i-1

while(R[0].key<R[j].key)

{

R[j+1]=R[j]

j--

}

R[j+1]=R[0]

}

m++

printf("\t\t第%d趟排序的结果为(按回车键开始排序):\n\t\t",m)

for(k=1k<=Lk++)

{

printf("%5d",R[k].key)

}

getchar()

printf("\n")

}

printf("\n\t\t排序最终结果是:\n\t\t")

for(i=1i<=Li++)

{

printf("%5d",R[i].key)

}

printf("\n")

}

//希尔排序

void Shellsort()

{

int i,j,gap,x,m=0,k

printf("\n\t\t原始数据为(按回车键开始排序):\n\t\t")

for(k=1k<=Lk++)

{

printf("%5d",R[k].key)

}

getchar()

printf("\n")

gap=L/2

while(gap>0)

{

for(i=gap+1i<=Li++)

{

j=i-gap

while(j>0)

{

if(R[j].key>R[j+gap].key)

{

x=R[j].key

R[j].key=R[j+gap].key

R[j+gap].key=x

j=j-gap

}

else

{

j=0

}

}

}

gap=gap/2

m++

printf("\t\t第%d趟排序的结果为(按回车键开始排序):\n\t\t",m)

for(k=1k<=Lk++)

{

printf("%5d",R[k].key)

}

getchar()

printf("\n")

}

printf("\n\t\t排序最终结果是:\n\t\t")

for(i=1i<=Li++)

{

printf("%5d",R[i].key)

}

printf("\n")

}

/斗枣兄/冒泡排序

void Bubblesort()

{

int i,j,k

int exchange

printf("\n\t\t原始数据为(按回车键开始排序):\n\t\t")

for(k=1k<=Lk++)

{

printf("%5d",R[k].key)

}

getchar()

printf("\n")

for(i=1i<Li++)

{

exchange=FALSE

for(j=Lj>=i+1j--)

{

if(R[j].key<R[j-1].key)

{

R[0].key=R[j].key

R[j].key=R[j-1].key

R[j-1].key=R[0].key

exchange=TRUE

}

}

if(exchange)

{

printf("\t\t第%d趟排序的结果为(按回车键开始排序空袭):\n\t\t",i)

for(k=1k<=Lk++)

{

printf("%5d",R[k].key)

}

getchar()

printf("\n")

}

}

printf("\n\t\t排序最终结果是:\n\t\t")

for(i=1i<=Li++)

{

printf("%5d",R[i].key)

}

printf("\n")

}

int Partition(int i,int j) //i和j为形式参数,分别代表low和high

{

RecType pirot=R[i]

while(i<j)

{

while(i<j&&R[j].key>=pirot.key)

{

j--

}

if(i<j)

{

R[i++]=R[j]

}

while(i<j&&R[j].key<=pirot.key)

{

i++

}

if(i<j)

{

R[j--]=R[i]

}

}

R[i]=pirot

return i

}

//递归排序

void Quicksort(int low,int high)

{

int pirotpos,k

if(low<high)

{

pirotpos=Partition(low,high)

num++

printf("\t\t第%d趟排序的结果为(按回车键开始排序):\n\t\t",num)

for(k=1k<=Lk++)

{

printf("%5d",R[k].key)

}

getchar()

printf("\n")

Quicksort(low,pirotpos-1)

Quicksort(pirotpos+1,high)

}

}

//选择排序

void Selectsort()

{

int i,j,k,h

printf("\n\t\t原始数据为(按回车键开始排序):\n\t\t")

for(k=1k<=Lk++)

{

printf("%5d",R[k].key)

}

getchar()

printf("\n")

for(i=1i<Li++)

{

h=i

for(j=i+1j<=Lj++)

{

if(R[j].key<R[h].key)

{

h=j

}

}

if(h!=j)

{

R[0]=R[i]

R[i]=R[h]

R[h]=R[0]

}

printf("\t\t第%d趟排序的结果为(按回车键开始排序):\n\t\t",i)

for(k=1k<=Lk++)

{

printf("%5d",R[k].key)

}

getchar()

printf("\n")

}

printf("\n\t\t排序最终结果是:\n\t\t")

for(i=1i<=Li++)

{

printf("%5d",R[i].key)

}

printf("\n")

}

void Merge(int low,int mm,int high)

{

int i=low,j=mm+1,p=0

RecType *R1

R1=new RecType[high-low+1]

if(!R1)

{

printf("内存不足!")

}

while(i<=mm&&j<=high)

{

R1[p++]=(R[i].key<=R[j].key)?R[i++]:R[j++]

}

while(i<=mm)

{

R1[p++]=R[i++]

}

while(j<=high)

{

R1[p++]=R[j++]

}

for(p=0,i=lowi<=highp++,i++)

{

R[i]=R1[p]

}

}

void MergePass(int length)

{

int i

for(i=1i+2*length-1<=Li=i+2*length)

{

Merge(i,i+length-1,i+2*length-1)

}

if(i+length-1<L)

{

Merge(i,i+length-1,L)

}

}

//归并排序

void Mergesort()

{

int length,k,m=0,i

printf("\n\t\t原始数据为(按回车键开始排序):\n\t\t")

for(k=1k<=Lk++)

{

printf("%5d",R[k].key)

}

getchar()

printf("\n")

for(length=1length<Llength*=2)

{

MergePass(length)

m++

printf("\t\t第%d趟排序的结果为(按回车键开始排序):\n\t\t",m)

for(k=1k<=Lk++)

{

printf("%5d",R[k].key)

}

getchar()

printf("\n")

}

printf("\n\t\t排序最终结果是:\n\t\t")

for(i=1i<=Li++)

{

printf("%5d",R[i].key)

}

printf("\n")

}

//堆建

void CreateHeap(int root,int index)

{

int j,temp,finish

j=2*root

temp=R[root].key

finish=0

while(j<=index&&finish==0)

{

if(j<index)

{

if(R[j].key<R[j+1].key)

{

j++

}

}

if(temp>=R[j].key)

{

finish=1

}

else

{

R[j/2].key=R[j].key

j=j*2

}

}

R[j/2].key=temp

}

//堆排序

void Heapsort()

{

int i,j,temp,k

for(i=(L/2)i>=1i--)

{

CreateHeap(i,L)

}

for(i=L-1,k=1i>=1i--,k++)

{

temp=R[i+1].key

R[i+1].key=R[1].key

R[1].key=temp

CreateHeap(1,i)

printf("\t\t第%d趟排序的结果为(按回车键开始排序):\n\t\t",k)

for(j=1j<=Lj++)

{

printf("%5d",R[j].key)

}

getchar()

printf("\n")

}

}

void Heap()

{

int i

printf("\n\t\t原始数据为(按回车键开始排序):\n\t\t")

for(i=1i<=Li++)

{

printf("%5d",R[i].key)

}

getchar()

printf("\n")

Heapsort()

printf("\n\t\t排序最终结果是:\n\t\t")

for(i=1i<=Li++)

{

printf("%5d",R[i].key)

}

printf("\n")

}

main()

{

Seqlist S

int i,k

char ch1,ch2,q

printf("\n\t\t请输入%d个待排序的数据(按回车键分隔):\n\t\t",L)

for(i=1i<=Li++)

{

scanf("%d",&S[i].key)

getchar()

printf("\t\t")

}

printf("\n\t\t数据输入完毕!")

ch1='y'

while(ch1=='y'||ch1=='Y')

{

printf("\n")

printf("\n\t\t 排 序 子 系 统 \n")

printf("\n\t\t*******************************************\n")

printf("\n\t\t* 1--------更新排序数据 *\n")

printf("\n\t\t* 2--------直接插入排序 *\n")

printf("\n\t\t* 3--------希 尔 排 序 *\n")

printf("\n\t\t* 4--------冒 泡 排 序 *\n")

printf("\n\t\t* 5--------快 速 排 序 *\n")

printf("\n\t\t* 6--------选 择 排 序 *\n")

printf("\n\t\t* 7--------归 并 排 序 *\n")

printf("\n\t\t* 8--------堆 排 序 *\n")

printf("\n\t\t* 0--------退出 *\n")

printf("\n\t\t*******************************************\n")

printf("\n\t\t请选择菜单号(0到8)")

scanf("%c",&ch2)

getchar()

for(i=1i<=Li++)

{

R[i].key=S[i].key

}

switch(ch2)

{

case '1':

printf("\n\t\t请输入%d个待排序数据(按回车键分隔)\n\t\t",L)

for(i=1i<=Li++)

{

scanf("%d",&S[i].key)

getchar()

printf("\t\t")

}

printf("\n\t\t数据输入完毕!")

break

case '2':

Insertsort()

break

case '3':

Shellsort()

break

case '4':

Bubblesort()

break

case '5':

printf("\n\t\t原始数据为(按回车键开始排序):\n\t\t")

for(k=1k<=Lk++)

{

printf("%5d",R[k].key)

}

getchar()

printf("\n")

num=0

Quicksort(1,L)

printf("\n\t\t排序最终结果是:\n\t\t")

for(k=1k<=Lk++)

{

printf("%5d",R[k].key)

}

printf("\n")

break

case '6':

Selectsort()

break

case '7':

Mergesort()

break

case '8':

Heap()

break

case '0':

ch1='n'

break

default:

system("cls")

printf("\n\t\t对不起,您输入有误,请重新输入!\n")

break

}

if(ch2!='0')

{

if(ch2=='2'||ch2=='3'||ch2=='4'||ch2=='5'||ch2=='6'||ch2=='7'||ch2=='8')

{

printf("\n\n\t\t排序完毕!")

printf("\n\t\t按回车键继续!")

q=getchar()

if(q!='\xA')

{

getchar()

ch1='n'

}

}

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12339701.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存