快排:
#include<bits/stdc++.h>
using namespace std;
void sort_Array(int *array,int left,int right)
{
if(left<right)
{
int index=array[left];
int low = left;
int high = right;
while(low<high)
{
while(array[high]>=index&&low<high)
{
high--;
}
array[low]=array[high];
while(array[low]<=index&&low<high)
{
low++;
}
array[high]=array[low];
}
array[low]=index;
sort_Array(array,left,low-1);
sort_Array(array,low+1,right);
}
}
int main()
{
int a[10]={3,1,4,5,7,8,9,6,4,5};
int n=10;
sort_Array(a,0,9);
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
堆排序:
#include <iostream>
using namespace std;
void adjust_heap(int* a, int node, int size)
{
int left=node*2+1;
int right=node*2+2;
int index = node;
if(left<size&&a[left]>a[index])
{
index=left;
}
if(right<size&&a[right]>a[index])
{
index=right;
}
if(index!=node)
{
swap(a[index],a[node]);
adjust_heap(a,index,size);
}
}
void heap_sort(int* a, int len)
{
for(int i=len/2-1;i>=0;i--)
adjust_heap(a,i,len);
for(int i=len-1;i>=0;i--)
{
swap(a[0],a[i]);
adjust_heap(a,0,i);
}
}
int main()
{
int a[10]={3,2,7,4,2,-999,-21,99,0,9};
int len= 10;
for(int i = 0; i < len; ++i)
cout<<a[i]<<' ';
cout << endl;
heap_sort(a, len);
for(int i = 0; i < len; ++i)
cout<<a[i]<<' ';
cout << endl;
return 0;
}