C++各种排序方法:
排序思想参考:https://blog.csdn.net/lipviolet/article/details/89077999
#include"iostream"
#include"cstdlib"
#define LENGTH 10
using namespace std;
void swap(int &,int &);
void display(int *);
void sortBubble(int *);
void sortChoice(int *);
void sortInsert(int *);
void sortHill(int *);
int main()
{
int *a = new int[LENGTH];
for(int i = 0;i<LENGTH;i++)
{
a[i] = rand()%100;
}
display(a);
sortHill(a);
display(a);
system("pause");
return 0;
}
void swap(int &a,int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
void display(int *a)
{
for(int i = 0;i<LENGTH;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
void sortBubble(int *a)
{
for(int i = 0;i<LENGTH;i++)
{
for(int j = i;j<LENGTH;j++)
{
if(a[i]>a[j])
{
swap(a[i],a[j]);
}
}
}
}
void sortChoice(int *a)
{
for(int i = 0;i<LENGTH;i++)
{
int temp = i;
for(int j = i;j<LENGTH;j++)
{
if(a[temp]>a[j]) temp = j;
}
swap(a[temp],a[i]);
}
}
void sortInsert(int *a)
{
for(int i = 0;i<LENGTH;i++)
{
for(int j = i;j>0 && a[j]<a[j-1];)
{
swap(a[j],a[j-1]);
j--;
}
}
}
void sortHill(int *a)
{
int gap = LENGTH/2;
while(gap>0)
{
for(int i = 0;i<LENGTH;i++)
{
for(int j = i+gap;j>=gap && a[j] < a[j-gap] && j<LENGTH;)
{
swap(a[j],a[j-gap]);
j+=gap;
}
}
gap = gap/2;
}
}