小学劳动实践一年级折笔帽#include
#include
#include
////实现简单选择排序、直接插入排序和冒泡排序
void SelectSort()
{
int m,t;
int a[]={8,2,4,3,6},n=5;
for(int i=0;ia[j])
{
min=a[j];
m=j;
}
}
if(a[i]!=min)
{
t=a[i];
a[i]=a[m];
a[m]=t;
}
}
//打印
for(i...
#include
#include
#include
////实现简单选择排序、直接插入排序和冒泡排序
void SelectSort()
{
int m,t;
int a[]={8,2,4,3,6},n=5;
for(int i=0;ia[j])
{
min=a[j];
m=j;
}
}
if(a[i]!=min)
{
t=a[i];
a[i]=a[m];
a[m]=t;
}
}
//打印
for(i=0;ia[i]&ξj--)
a[j+1]=a[j];
a[i+1]=tem;
for(i=0;ia[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
for(i=0;i0)
{
for(i=Gap;i=0)
if(a[j]>a[j+Gap])
{
temp=a[j];
a[j]=a[j+Gap];
a[j+Gap]=temp;
j=j-Gap;
}
else break;
}
Gap/=2;
}
for(i=0;ipivot)
hi--;
else {
t=n[lo+1];
n[++lo]=n[hi-1];
n[--hi]=t;
}
}
n[left]=n[lo];
n[lo]=pivot;
return lo;
}
//////堆排序的简单数组实现
void HeapAdjust(int array[], int i, int nLength)
{
int nChild, nTemp;
for (nTemp = array[i]; 2 * i + 1 < nLength; i = nChild)
{
// 子结点的位置是 父结点位置 * 2 + 1
nChild = 2 * i + 1; // 得到子结点中较大的结点
if (nChild != nLength - 1 && array[nChild + 1]>array[nChild])
++nChild; // 如果较大的子结点大于父结点那么把较大的子结点往上移动,替换它的父结点
if (nTemp= 0; --i)
{
HeapAdjust(array, i, length);
}
// 从最后一个元素开始对序列进行调整,不断的缩小调整的范围直到第一个元素
for (i=length - 1; i > 0; --i)
{
// 把第一个元素和当前的最后一个元素交换,
// 保证当前的最后一个位置的元素都是在现在的这个序列之中最大的
Swap(&array[0], &array[i]); // 不断缩小调整heap的范围,每一次调整完毕保证第一个元素是当前序列的最大值
HeapAdjust(array, 0, i);
}
}
////输出数组
void print(int b[])
{
for(int i=0;i表的操作排序
//创建一个单链表,初始化数据
typedef struct londe
{
int data;
struct londe *next;
}londe,*linklist;
void createlist(linklist &L)
{
linklist p=(linklist)malloc(sizeof(londe));
p->data=NULL;
p->next=NULL;
L=p;
}
void insertlist(linklist &L)
{
linklist p;
int as;
p=L;
printf("请输入链表的的元素,输入以#为结束\n");
while(scanf("%d",&as)&&as!='#')
{
linklist q=(linklist)malloc(sizeof(londe));
q->data=as;
q->next=NULL;
p->next=q;
p=q;
}
printf("链表创建成功!!\n");
} /////////链表创建生成完成
void printlist(linklist &L)
{
linklist p;
p=L->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
/////链表的排序操作
int rtnlegth(linklist &L) //计算双向链表的长度
{
linklist p;
int count=0;
p=L->next;
while(p)
{
count++;
p=p->next;
}
return(count);
}
void listSelectSort(linklist &L) //链表的选择排序
{
linklist p,q,small;
int temp;
for(p=L->next;p->next!=NULL;p=p->next)
{
small=p;
for(q=p->next;q;q=q->next)
if(q->data
data)
small=q;
if(small!=p)
{
temp=p->data;
p->data=small->data;
small->data=temp;
}
}
printf("选择排序结果如下:\n");
printlist(L);
printf("\n");
}
void insertlistsort(linklist &L) //链表的插入排序
{
linklist p;
int xx;
p=L->next;
printf("请输入要插入的数据\n");
scanf("%d",&xx);
linklist pp=(linklist)malloc(sizeof(londe));
pp->data=xx;
if(p->data>=xx)
{
pp->next=p;
L=p;
return;
}
while(p->next)
{
if(xx>=p->data&&p->next->data>=xx)
pp->next=p->next->next;
p->next=pp;
return;
}
printf("插入排序结果如下:\n");
printlist(L);
printf("\n");
}
void maopao(linklist &L) //链表的冒泡排序
{
linklist p;
int tem;
for(int i=1;inext;
for(int j=0;jdata>=p->next->data)
{
tem=p->data;
p->data=p->next->data;
p->next->data=tem;
}
p=p->next;
}
}
printf("冒泡排序结果如下:\n");
printlist(L);
printf("\n");
}
int main()
{
int mm,nn;
int b[]={8,2,4,3,6};
linklist L;
printf("请选择菜单:******************************\n");
printf("1:实现简单选择排序、直接插入排序和冒泡排序\n");
printf("2:实现希尔排序算法************************\n");
printf("3:实现快速排序算法************************\n");
printf("4:实现堆排序算法**************************\n");
printf("采用链式存储实现简单选择排序、直接插入排序和冒泡排序\n");
printf("5:创建一个链表输出并:**********************\n");
printf("6:链表选择排序:****************************\n");
printf("7:链表插入排序:****************************\n");
printf("8:链表冒泡排序:*****************************\n");
printf("\n");
while(scanf("%d",&mm)!=EOF)
{
switch(mm)
{
case 1:
{
printf("1:选择排序\n");
printf("2:插入排序\n");
printf("3:冒泡排序\n");
while(scanf("%d",&nn)!=EOF)
{
switch(nn)
{
case 1:
SelectSort();
break;
case 2:
inserssort();
break;
case 3:
maopao();
break;
}
break;
}
printf("\n");
break;
}
case 2:
shellsort();
printf("\n");
break;
case 3:
quicksort(b,0,4);
printf("快速排序为\n");
print(b);
break;
case 4:
printf("堆排序为\n");
HeapAdjust(b,1,5);
print(b);
break;
case 5:
createlist(L);
insertlist(L);
break;
case 6:
listSelectSort(L);
break;
case 7:
insertlistsort(L);
break;
case 8:
maopao(L);
break;
}
printf("\n");
printf("1:实现简单选择排序、直接插入排序和冒泡排序\n");
printf("2:实现希尔排序算法************************\n");
printf("3:实现快速排序算法************************\n");
printf("4:实现堆排序算法**************************\n");
printf("采用链式存储实现简单选择排序、直接插入排序和冒泡排序\n");
printf("5:创建一个链表输出并:**********************\n");
printf("6:链表选择排序:****************************\n");
printf("7:链表插入排序:****************************\n");
printf("8:链表冒泡排序:*****************************\n");
printf("\n");
}
return 0;
}
本文档为【小学劳动实践一年级折笔帽】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。