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'
}
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)