#include "stdio.h"
#include "windows.h"
#include <conio.h>
//#include <stdlib.h>
#include<math.h>
#pragma comment(lib,"winmm.lib")
//#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
void quicklysort(int *,int ,int );//快速排序算法
void heapadjust(int *,int ,int );//堆调整
void heapsort(int *,int );//堆排序算法
HANDLE hout;
SYSTEMTIME st;
void setpoint(int x,int y)
{
COORD tp;
tp.X=x;
tp.Y=y;
SetConsoleCursorPosition(hout,tp);
}
void main()
{
system("color 1E");
int i,j;
COORD pt;
GetLocalTime(&st);
hout=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTitle("排序算法");
setpoint(0,1);
printf(" ");
printf("┏");
for(i=0;i<9;i++)
if(i==4) printf("快速排序算法(升序)");
else
printf("━");
printf("┳");
for(i=0;i<10;i++)
if(i==4) printf("堆排序算法(降序)");
else
printf("━");
printf("┓");
for(i=0;i<20;i++)
{
setpoint(3,i+2);
printf("*");
setpoint(39,i+2);
printf("*");
setpoint(75,i+2);
printf("*");
}
setpoint(3,21);
printf("┗");
for(j=0;j<35;j++)
if(j==17) printf("┻");
else printf("━");
printf("┛");
pt.X=30;
pt.Y=23;
SetConsoleCursorPosition(hout,pt);
printf("%d-%d-%d %d:%d:%d",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
for(i=0;i<2;i++)
{
setpoint(5,2*i+3);
if(i==0)
{
int i,a[10];
printf("随机产生十个数字:");
GetLocalTime(&st);
setpoint(5,4);
a[0]=st.wMilliseconds%99;
printf("%d ",a[0]);
for(i=1;i<10;i++)
{
a[i]=((int)(sqrt(a[i-1])*101))%99;
printf("%d ",a[i]);
}
setpoint(5,5);
printf("排序后:");
setpoint(5,6);
quicklysort(a,0,9);
for(i=0;i<10;i++)
printf("%d ",a[i]);
}
else
{
int i,a[10];
setpoint(41,3);
printf("随机产生十个数字:");
GetLocalTime(&st);
setpoint(41,4);
a[0]=(st.wMilliseconds+st.wSecond*1000)%99+10;
printf("%d ",a[0]);
for(i=1;i<10;i++)
{
a[i]=((int)(sqrt(a[i-1])*11))%90+10;
printf("%d ",a[i]);
}
setpoint(41,5);
printf("排序后:");
setpoint(41,6);
heapsort(a,9);
for(i=0;i<10;i++)
printf("%d ",a[i]);
setpoint(41,7);
printf("堆样式");
i=0;
while(i==0)
{
setpoint(48,8);
printf("%d ",a[i]);
i++;
}
setpoint(45,9);
while(i>0&&i<3)
{
printf("%d ",a[i]);
i++;
}
setpoint(43,10);
while(i>=3&&i<7)
{
printf("%d ",a[i]);
i++;
}
setpoint(41,11);
while(i>=7&&i<10)
{
printf("%d ",a[i]);
i++;
}
}
}
setpoint(25,24);
}
void quicklysort(int *a,int s,int t)
{
int i=s,j=t;
int temp;
temp=a[s];
while(j>i)
{
while(j>i&&a[j]>temp) j--;
if(j>i) a[i]=a[j];
while(j>i&&a[i]<=temp) i++;
if(j>i) a[j]=a[i];
}
a[i]=temp;
if(s<i-1) quicklysort(a,s,i-1);
if(i+1<t) quicklysort(a,i+1,t);
}
void heapadjust(int *a,int s,int t)
{
int i=s;
int j;
j=2*i;
int temp;
temp=a[s];
while(j<=t)
{
if(j<t && a[j]>a[j+1]) j++;
if(temp>a[j])
{
a[i]=a[j];
i=j;
j=2*i;
}
else
j=t+1;
}
a[i]=temp;
}
void heapsort(int *a,int n)
{
int i;
int temp;
for(i=n/2;i>=0;i--)
heapadjust(a,i,n);
for(i=n;i>0;i--)
{
temp=a[0];
a[0]=a[i];
a[i]=temp;
heapadjust(a,0,i-1);
}
}
2019-07-17 22:50:10