#include<iostream.h>
#include<iomanip.h>
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#define N 100
int p,q;
//起泡排序
void gensort(int b[],int n)
{
int i,j;int s=0,t=0;
for(i=0;i<n-1;i++)
{
   for(j=i+1;j<n;j++)
   {
    t++;
    if(b[i]>b[j])
    {
     int temp=b[i];
     b[i]=b[j];
     b[j]=temp;
     s+=3;
    }}}
cout<<"移动次数="<<s<<","<<"比较次数="<<t<<endl;
}

//插入排序
typedef int KeyType;

struct rec 
{
KeyType key;
};
typedef rec sqlist[N];

void insertsort(sqlist b,int n)
{
int i,j;int s=0,t=0;
for(i=2;i<n;i++)
{
   b[0]=b[i];
   s++;
   j=i-1;
   t++;
   while(b[0].key<b[j].key)
   {
    b[j+1]=b[j];
    j--;
    s++;
    t++;
   }
   b[j+1]=b[0];
   s++;
}
   cout<<"移动次数="<<s<<","<<"比较次数="<<t<<endl;
}


//希尔排序
void shellsort(sqlist b,int n)
{
int i,j,gap;
rec x;
int s=0,t=0;
gap=n/2;
while(gap>0)
{
   for(i=gap+1;i<n;i++)
   {
    j=i-gap;
    while(j>0)
    {
     t++;
     if(b[j].key>b[j+gap].key)
     {
      x=b[j];b[j]=b[j+gap];
      b[j+gap]=x;j=j-gap;
      s+=3; 
     }
     else j=0; 
     gap=gap/2;
    }}
  cout<<"移动次数="<<s<<","<<"比较次数="<<t<<endl;
}}


//选择排序 
void gentsort(int b[],int n)
{
int i,j,k;
int s=0,t=0;
for(i=0;i<n-1;i++)
{
   k=i;
   for(j=i+1;j<n;j++)
   {
    t++;
    if(b[k]>b[j]) 
    {k=j;}
   }
   if(k!=i)
   {int temp=b[k];
   b[k]=b[i];
   b[i]=temp;
   s+=3;
   }}
cout<<"移动次数="<<s<<","<<"比较次数="<<t<<endl;
}



//快速排序
void output(sqlist b,int n)//输出元素值
{
for(int i=0;i<n;i++)
   cout<<setw(4)<<b[i].key;
cout<<endl;
}
void display(int n,int m)//输出计数
{
cout<<"移动次数="<<n<<","<<"比较次数="<<m<<endl;
}
void BeforeSort()//初始化计数器
{
p=0;q=0;
}
void quicksort(sqlist r,int s,int t)
{
int i=s,j=t;
if(s<t)
    {
   r[0]=r[s];p++;
        while(i<j)
   {
    p++;
         while(i<j&&r[j].key>=r[0].key)
     j--;
    r[i]=r[j];
    q++;
    p++;
         p++;
    while(i<j&&r[i].key<=r[0].key)
     i++;
    r[j]=r[i];q++;p++;
   }
   r[i]=r[0];p++;
   }   
else return;
quicksort(r,s,j-1);
quicksort(r,j+1,t); 
}
void sort(sqlist r,int s,int t)
{
BeforeSort();
quicksort(r,s,t);
display(p,q);
}


//堆排序
void sift(sqlist r,int s,int m)
{
int j;
rec x;
x=r[s];
for(j=2*s;j<=m;j*=2)
{q++;
if(j<m&&(r[j].key<r[j+1].key)) 
   ++j;
q++;
if(!(x.key<r[j].key)) break;
r[s]=r[j];s=j;p++;}
r[s]=x;p++;
}
void heapsort(sqlist &r,int m)
{
int i;rec w;
for(i=m/2;i>0;--i) 
   sift(r,i,m);
for(i=m;i>1;--i)
{
   w=r[i];r[i]=r[1];
   r[1]=w;
   p+=3;
   sift(r,1,i-1);
}
}
void sorting(sqlist &r,int t)
{
BeforeSort();
heapsort(r,t);
display(p,q);
}
void init(int a[]){//随机生成N个整数并
 int i;
 srand ( ( unsigned int ) time ( NULL ) );
 for(i=0;i<N;i++)
  a[i]=rand()%99+1;
}

void main()
{
int a1[N],i;
int e=N;
sqlist a,b,c,d;
int c1[N];
int low=0,high=10;

init(a1);
for(i=0;i<N;i++)
{
c1[i]=a1[i];
a[i].key=a1[i];
b[i].key=a1[i];
c[i].key=a1[i];
d[i].key=a1[i];
}
cout<<"排序前数组:\n";
for(i=0;i<N;i++)
cout<<setw(4)<<a1[i];
cout<<endl;
cout<<"起泡排序运行结果:\n";
gensort(a1,sizeof(a1)/sizeof(int));
cout<<"插入排序运行结果:\n";
insertsort(a,N);
cout<<"希尔排序运行结果:\n";
shellsort(b,N);
cout<<"选择排序运行结果:\n";
gentsort(c1,N);
cout<<"快速排序运行结果:\n";
sort(c,low,high);
cout<<"堆排序运行结果:\n";
sorting(d,N);
cout<<"排序后数组:\n";
for(i=0;i<N;i++)
cout<<setw(4)<<a1[i];
cout<<endl;
cin.get();
}
zmy2020(前端大神) - 2020-01-07 0 人
排序算法比较

#include <stdio.h>
int main ()
{
	int a[]={3,8,5,3,2},i,j,x;
    for(i=0;i<5;i++)
    {
        for(i=0;i<4;i++)
        {
            for(j=i+1;j<5;j++)
            if(a[i]>a[j])
            {
                x=a[i];
                a[i]=a[j];
                a[j]=x;
            }    
        }
    }
    for(i=0;i<5;i++)
    {
        printf("%d\t",a[i]);
    }

	return 0;
}
zmy2020(前端大神) - 2020-01-03 0 人
冒泡排序(从小到大)
#include <stdio.h>
int main () {
int i,j,temp;
int k;
static int s = 1;
int n = 7;
int a[7] = {1,7,2,6,3,5,4};
for(i = 1;i <= n-1;i ++){
    temp = a[i];
    j    = i - 1;
    for(;j >=0&&a[j] > temp;j --){
        a[j + 1] = a[j];
    }
    a[j + 1] = temp;
    printf("第%d趟:",s ++);
    for(k = 0;k <= n-1;k ++)
        printf("%d,",a[k]);
    printf("\n");
}
}
zmy2020(前端大神) - 2020-01-03 0 人
直接插入排序

#include <stdio.h>
int main () {
    //程序运行完成时一定要有输出语句,本工具才能正确展示运行结果。 
	printf("Hello wwww!   \n\n         - from C .");
	return 0;
}
abrahamsujq(前端大神) - 2019-12-25 0 人
测试这个平台值得花钱么1

#include <stdio.h>
int main () {
    //程序运行完成时一定要有输出语句,本工具才能正确展示运行结果。 
	printf("Hello wwww!   \n\n         - from C .");
	return 0;
}
abrahamsujq(前端大神) - 2019-12-25 0 人
测试这个平台值得花钱么1

#include <stdio.h>
int main () {
    //程序运行完成时一定要有输出语句,本工具才能正确展示运行结果。 
	printf("Hello JSRUN!   \n\n         - from C .");
	return 0;
}
abrahamsujq(前端大神) - 2019-12-25 0 人
test1
没有了
1/9 下一页