#include <stdio.h>
#include <stdlib.h>
void print (int* a, int len);
void InsertSort (int* a, int len);
void SelectSort (int* a, int len);
void BubbleSort (int* a, int len);
void QuickSort (int*a, int begin, int end);
int main(void)
{
int n;
scanf("%d",&n);
int* a = malloc(sizeof(int)*n);
for (int i=0;i<n;i++) {
scanf("%d",&a[i]);
}
int i;
//InsertSort(a,n);
//SelectSort(a,n);
//BubbleSort(a,n);
QuickSort(a,0,n-1);
print(a,n);
return 0;
}
void InsertSort (int* a, int len)
{
int i;
for (i=1;i<len;i++) {
if (a[i]>a[i-1]) {
int temp = a[i];
int j = i-1;
while (temp>a[j] && j>=0) {
a[j+1] = a[j];
j --;
}
a[j+1] = temp;
}
}
return ;
}
void SelectSort (int* a, int len)
{
for (int i=0;i<len-1;i++) {
int maxid = i;
for (int j=i;j<len-1;j++) {
if (a[j+1]>a[maxid]) {
maxid = j+1;
}
}
int temp = a[maxid];
a[maxid] = a[i];
a[i] = temp;
}
return ;
}
void BubbleSort (int* a, int len)
{
int bound;
int exchange;
exchange = bound = len-1;
while ( exchange != 0) {
exchange = 0;
for (int j=0;j<=bound;j++) {
if (a[j]<a[j+1]) {
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
exchange = j;
}
}
bound = exchange;
}
}
void QuickSort (int* a, int begin, int end)
{
int key=a[begin],i=begin,j=end;
while (i < j) {
int temp;
while (key>a[j] && i<j) {
j--;
}
if (i<j) {
a[i] = a[j];
i ++;
}
while (key<a[i] && i<j) {
i++;
}
if (i<j) {
a[j] = a[i];
j --;
}
}
a[i] = key;
if (i>begin) {
QuickSort (a,begin,i-1);
}
if (j<end) {
QuickSort (a,j+1,end);
}
}
void print (int* a, int len)
{
for (int i=0;i<len;i++) {
printf("%d ",a[i]);
}
return ;
}
三种基本排序算法+快速排序
最新推荐文章于 2021-08-23 00:12:34 发布