数据结构排序程序实例

更新时间:2023-11-02 05:47:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

几种排序:要求随机输入一组数据 随时给出某一趟排序的变化情况 1.直接插入排序;

2.冒泡排序,快速排序; 3.简单选择排序

程序源代码(已通过编译并运行成功):

#include #include

//////直接插入排序

void InsertSort(int a[],int n) {

int i,j,k=1;

for(i=2;i<=n;i++) { if(a[i]

a[0]=a[i]; a[i]=a[i-1];

for(j=i-2;a[0]

a[j+1]=a[0];}

printf(\第%d趟结果为:\ for(k=1;k<=n;k++) printf(\ } }

//////冒泡排序

void Bubsort(int a[],int n) { int i,j,flag,temp,k; for (i=n;i>=2;i--) { flag=0;

for (j=1;j<=i-1;j++) if (a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; flag=1; }

if (flag==0) break;

printf(\第%d趟结果为:\ for(k=1;k<=n;k++)

printf(\ } }

//////快速排序

void QuickSort(int a[],int left,int right) {

int i,j,temp,k; i=left; j=right;

temp=a[left]; if(left>right) return;

while(i!=j)/*找到最终位置*/ {

while(a[j]>=temp && j>i) j--; if(j>i)

a[i++]=a[j];

while(a[i]<=temp && j>i) i++; if(j>i) a[j--]=a[i];

printf(\本趟排序结果为:\ for(k=1;k<=right;k++) printf(\ }

a[i]=temp;

QuickSort(a,left,i-1);/*递归左边*/ QuickSort(a,i+1,right);/*递归右边*/ }

///////简单选择排序

void Slectsort(int a[],int n) { int i,j,k,temp,t=1,p; for (i=1;i

if (a[k]

void Print(int a[],int n) { int i;

for(i=1;i<=n;i++) printf(\ printf(\}

void main(int argc, char* argv[]) { int n,i; int left=1; int right; int a[100]; char ch='1'; loop: printf(\请输入共有几个数据参加排序(最多为100个):\ scanf(\ right=n; printf(\请随机输入%d个数据:\\n\ for(i=1;i<=n;i++) scanf(\ printf(\请选择需要的排序操作:\\n\ printf(\ 1.直接插入排序\\n\ printf(\ 2.冒泡排序\\n\ printf(\ 3.快速排序\\n\ printf(\ 4.简单选择排序\\n\ ch=getch(); if((ch!='1')&&(ch!='2')&&(ch!='3')&&(ch!='4'))

}

{

printf(\错误,请输入1,2,3,4\\n\ ch=getch(); }

switch(ch) { case '1': InsertSort(a,n); }

printf(\直接插入排序的最后排序结果为:\ Print(a,n); goto loop;break; case '2': Bubsort(a,n); printf(\冒泡排序的最后排序结果为:\ Print(a,n); goto loop;break; case '3': QuickSort(a,left,right); printf(\快速排序的最后排序结果为:\ Print(a,n); goto loop;break; case '4': Slectsort(a,n); printf(\简单选择排序的最后排序结果为:\ Print(a,n); goto loop;break;

本文来源:https://www.bwwdw.com/article/lst2.html

Top