目录
选择排序:
// 选择排序(升序)
void SelectSort(int a[], int n)
{
for (int i = 0; i < n-1; i++)
{
int min = i;
for (int j = i+1; j < n; j++)
{
if (a[min] > a[j])
{
min = j;
}
}
int temp = a[min];
a[min] = a[i];
a[i] = temp;
}
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
时间复杂度:O(n^2)
冒泡排序:
//冒泡排序
void BubbleSort(int a[], int n)
{
for(int i=n-1;i>=1;i--)
{
for(int j=0;j<=i;j++)
{
if(a[j]>a[j+1])
swap(a[j],a[j+1]);
}
}
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
时间复杂度:O(n^2)
插入排序:
//插入排序
void InsertSort(int a[], int n)
{
for(int i=0;i<n;i++)
{
for(int j=i-1;j>=0;j--)
{
if(a[j]<a[i]) break;
if(j!=i-1)
{
int temp=a[i];
for(int k=i-1;k>j;k--)
{
a[k+1]=a[k];
}
a[k+1]=temp;
}
}
}
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
时间复杂度:O(n^2)
桶排序:
//桶排序
void BucketSort(int a[], int n)
{
for(int i=1;i<=n;i++)
{
b[a[i]]++;
}
for(int i=0;i<=n;i++)
{
while(b[i]>0)
{
cout<<i<<"";
b[i]--;
}
}
cout<<endl;
}
时间复杂度:O(n)
快速排序:
//快速排序
void QuickSort(int l,int r)
{
int i,j,mid;
i=l;
j=r;
mid=a[(l+r)/2];
do
{
while(a[i]<mid) i++;
while(a[j]>mid) j--;
if(i<=j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
i++;j--;
}
}while(i<=j);
if(l<j) QuickSort(l,j);
if(i<r) QuickSort(i,r);
}
时间复杂度:O(nlogn)
归并排序:
//归并排序
void MergeSort(int s,int t)
{
int r[n];
if(s==t) return;
int mid=(s+t)/2;
MergeSort(s,mid);
MergeSort(mid+1,t);
int i=s,j=mid+1,k=s;
while(i<=mid&&j<=t)
{
if(a[i]<=a[j])
{
r[k]=a[i];
k++;i++;
}
else
{
r[k]=a[j];
k++;j++;
}
}
while(i<=mid)
{
r[k]=a[i];
k++;i++;
}
while(j<=t)
{
r[k]=a[j];
k++;j++;
}
for(int i=s;i<=t;i++)
{
a[i]=r[i];
}
}
时间复杂度:O(nlogn)
堆排序