C
caohui14
Unregistered / Unconfirmed
GUEST, unregistred user!
直接插入排序
#include "iostream.h"
#include <conio.h>
const int n=51;
class a
{
private:
int num;
float list[n];
public:
a(int i);
{
int j;
num=i;
for(j=1;j<=i;j++)
cin>>list[j];
}
//输入记录元素
void print()
{
int i;
for(i=1;i<=num;i++)
cout<<list<<"
";
cout<<
endl;
}
//****************显示记录元素**************
void straipass(int i)
{
int j;
float x;
j=i-1;
x=list;
list[0]=list;
while(x<list[j])
{
list[j+1]=list[j];
j=j-1;
}
list[j+1]=list[0];
}
//已知list[1..i-1]中的元素按大小非递减有序排列,本算法插入list,
//使得list[1..i]中元素按大小非递减有序排列.
void straisort()
{
int i;
for(i=2;i<=num;i++)
straipass(i);
}
//对list[1..num]进行直接插入排序,执行本算法后,
//list[1..num]中元素按大小非递减有序排列。
};
void main()
{
int i;
cout<<"****************Straight Pass*******************/n";
cout<<"Please input the number of the array./n";
cin>>i;
cout<<"then
input them./n";
a x(i);
//输入记录元素
x.straisort();
//直接插入排序
cout<<"Paixu:/n";
x.print();
//显示记录元素
getch();
}
快速排序源程序代码
#include<iostream.h>
#define N 10
void main()
{
void qsort(int r1[N],int a,int b);
int r[N],result[N];
int i,j;
cout<<"Please input Howmany numbersdo
you want to cin"<<
endl;
cout<<"i=";
cin>>i;
if( i>N){ cout<<"over float,Make sure i<"<<N<<
endl;
cin>>i;}
else
cout<<"Right"<<
endl;
cout<<
endl;
for(j=1;j<=i;j++)
cin>>r[j];
qsort(r,1,i);
for(j=1;j<=i;j++)
cout<<r[j]<<"
";
cout<<
endl;
}
void qsort(int r[N],int a,int b)
{
int s=a,t=b;
int temp;
int i,j;
do
{
for(i=1;i<=t;i++)
for(j=i+1;j<=t;j++)
{
if( r>r[j]) {
temp=r;
r=r[j];
r[j]=temp;
}
}
for(i=1;i<=t;i++)
for(j=i+1;j<=t;j++)
if( r>r[j] ) {
temp=r;
r=r[j];
r[j]=temp;
}
}
while(s==t);
}
简单选择排序
#include <stdio.h>
#define max 10
struct rec
{
int key;
};
typedef struct rec sqlist[max];
void creat (sqlist r)
{
for (int i = 0;i<=max-1;i++)
{
printf("insert %dth element/n",i+1);
scanf("%d",&r.key);
}
} //----初始化数组----
void selectsort(sqlist r)
{
int i,j,k;
struct rec temp;
for(i = 0;i<=max-1;i++)
{
k = i;
for (j = i+1;j<=max-1;j++)
{
if (r[j].key<r[k].key) k = j;
//---用k指出每趟在无须区段的最小元素---
{
temp = r;
//---将r[k]与r交换---
r = r[k];
r[k] = temp;
}
}
} //---排序函数r[0]~r[max-1]---
//--------------main-------------
void main()
{
sqlist s;
creat (s);
selectsort(s);
for(int k = 0;k<=max-1;k++)
printf("%d/n",s[k].key);
}
堆排序源程序代码
#include <stdio.h>
#define max 11
struct rec
{
int key;
};
typedef struct rec sqlist[max];
void creat (sqlist r)
{
for (int i = 1;i<=max-1;i++)
{
printf("insert %dth element/n",i);
scanf("%d",&r.key);
}
} //---初始化数组---
void sift(sqlist r,int k,int m)
{
int i,j;
int x;
int finished;
struct rec temp;
i = k;
j = i*2;
//---r[j]是r的左孩子---
x = r.key;
finished = 0;
temp = r[k];
while (j<=m &&
!finished)
{ //---若右孩子较大,则把j修改为右孩子的下标---
if (j<m &&
r[j].key>r[j+1].key) j++;
if (x<=r[j].key)
finished = 1;
else
{
r = r[j];
//---将r调到父亲的位置上---
i = j;
//---修给i和j的值,以便继续向下筛选---
j = 2*i;
}
}
r = temp;
}
void heapsort(sqlist r)
{
int i;
struct rec m;
for(i = int((max-1)/2);i>=1;i--)
sift(r,i,max-1);
//---建立初始堆---
for(i = max-1;i>=2;i--) //---进行n-1次循环,完成堆排序---
{
m = r;
//---将第一个元素同当前区间内最后一个元素对换---
r = r[1];
r[1] = m;
sift(r,1,i-1);
//---筛选r[1]结点,得到(i-1)个结点的堆---
}
}
//---堆排序---
//----------------main-------------
void main()
{
sqlist s;
creat (s);
heapsort(s);
for (int k = 1;k<=max-1;k++)
printf("%d/n",s[k].key);
}
#include "iostream.h"
#include <conio.h>
const int n=51;
class a
{
private:
int num;
float list[n];
public:
a(int i);
{
int j;
num=i;
for(j=1;j<=i;j++)
cin>>list[j];
}
//输入记录元素
void print()
{
int i;
for(i=1;i<=num;i++)
cout<<list<<"
";
cout<<
endl;
}
//****************显示记录元素**************
void straipass(int i)
{
int j;
float x;
j=i-1;
x=list;
list[0]=list;
while(x<list[j])
{
list[j+1]=list[j];
j=j-1;
}
list[j+1]=list[0];
}
//已知list[1..i-1]中的元素按大小非递减有序排列,本算法插入list,
//使得list[1..i]中元素按大小非递减有序排列.
void straisort()
{
int i;
for(i=2;i<=num;i++)
straipass(i);
}
//对list[1..num]进行直接插入排序,执行本算法后,
//list[1..num]中元素按大小非递减有序排列。
};
void main()
{
int i;
cout<<"****************Straight Pass*******************/n";
cout<<"Please input the number of the array./n";
cin>>i;
cout<<"then
input them./n";
a x(i);
//输入记录元素
x.straisort();
//直接插入排序
cout<<"Paixu:/n";
x.print();
//显示记录元素
getch();
}
快速排序源程序代码
#include<iostream.h>
#define N 10
void main()
{
void qsort(int r1[N],int a,int b);
int r[N],result[N];
int i,j;
cout<<"Please input Howmany numbersdo
you want to cin"<<
endl;
cout<<"i=";
cin>>i;
if( i>N){ cout<<"over float,Make sure i<"<<N<<
endl;
cin>>i;}
else
cout<<"Right"<<
endl;
cout<<
endl;
for(j=1;j<=i;j++)
cin>>r[j];
qsort(r,1,i);
for(j=1;j<=i;j++)
cout<<r[j]<<"
";
cout<<
endl;
}
void qsort(int r[N],int a,int b)
{
int s=a,t=b;
int temp;
int i,j;
do
{
for(i=1;i<=t;i++)
for(j=i+1;j<=t;j++)
{
if( r>r[j]) {
temp=r;
r=r[j];
r[j]=temp;
}
}
for(i=1;i<=t;i++)
for(j=i+1;j<=t;j++)
if( r>r[j] ) {
temp=r;
r=r[j];
r[j]=temp;
}
}
while(s==t);
}
简单选择排序
#include <stdio.h>
#define max 10
struct rec
{
int key;
};
typedef struct rec sqlist[max];
void creat (sqlist r)
{
for (int i = 0;i<=max-1;i++)
{
printf("insert %dth element/n",i+1);
scanf("%d",&r.key);
}
} //----初始化数组----
void selectsort(sqlist r)
{
int i,j,k;
struct rec temp;
for(i = 0;i<=max-1;i++)
{
k = i;
for (j = i+1;j<=max-1;j++)
{
if (r[j].key<r[k].key) k = j;
//---用k指出每趟在无须区段的最小元素---
{
temp = r;
//---将r[k]与r交换---
r = r[k];
r[k] = temp;
}
}
} //---排序函数r[0]~r[max-1]---
//--------------main-------------
void main()
{
sqlist s;
creat (s);
selectsort(s);
for(int k = 0;k<=max-1;k++)
printf("%d/n",s[k].key);
}
堆排序源程序代码
#include <stdio.h>
#define max 11
struct rec
{
int key;
};
typedef struct rec sqlist[max];
void creat (sqlist r)
{
for (int i = 1;i<=max-1;i++)
{
printf("insert %dth element/n",i);
scanf("%d",&r.key);
}
} //---初始化数组---
void sift(sqlist r,int k,int m)
{
int i,j;
int x;
int finished;
struct rec temp;
i = k;
j = i*2;
//---r[j]是r的左孩子---
x = r.key;
finished = 0;
temp = r[k];
while (j<=m &&
!finished)
{ //---若右孩子较大,则把j修改为右孩子的下标---
if (j<m &&
r[j].key>r[j+1].key) j++;
if (x<=r[j].key)
finished = 1;
else
{
r = r[j];
//---将r调到父亲的位置上---
i = j;
//---修给i和j的值,以便继续向下筛选---
j = 2*i;
}
}
r = temp;
}
void heapsort(sqlist r)
{
int i;
struct rec m;
for(i = int((max-1)/2);i>=1;i--)
sift(r,i,max-1);
//---建立初始堆---
for(i = max-1;i>=2;i--) //---进行n-1次循环,完成堆排序---
{
m = r;
//---将第一个元素同当前区间内最后一个元素对换---
r = r[1];
r[1] = m;
sift(r,1,i-1);
//---筛选r[1]结点,得到(i-1)个结点的堆---
}
}
//---堆排序---
//----------------main-------------
void main()
{
sqlist s;
creat (s);
heapsort(s);
for (int k = 1;k<=max-1;k++)
printf("%d/n",s[k].key);
}