|
|
|
@ -0,0 +1,77 @@
|
|
|
|
|
//插入排序
|
|
|
|
|
//复杂度:O(n^2) 运行时间:170ms
|
|
|
|
|
#include<stdio.h>
|
|
|
|
|
void InsertSort(int arr[], int length)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 1; i < length; i++)
|
|
|
|
|
{
|
|
|
|
|
int j;
|
|
|
|
|
if (arr[i] < arr[i - 1])
|
|
|
|
|
{
|
|
|
|
|
int temp = arr[i];
|
|
|
|
|
for (j = i - 1; j >= 0 && temp < arr[j]; j--)
|
|
|
|
|
{
|
|
|
|
|
arr[j + 1] = arr[j];
|
|
|
|
|
}
|
|
|
|
|
arr[j + 1] = temp;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
int n;
|
|
|
|
|
scanf("%d",&n);
|
|
|
|
|
int arr[n];
|
|
|
|
|
for(int i=0;i<n;i++)
|
|
|
|
|
{
|
|
|
|
|
scanf("%d",&arr[i]);
|
|
|
|
|
}InsertSort(arr,n);
|
|
|
|
|
for(int i=0;i<n;i++)
|
|
|
|
|
{
|
|
|
|
|
printf("%d ",arr[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//希尔排序
|
|
|
|
|
//复杂度:O(n^1.3)
|
|
|
|
|
//运行时间:170ms
|
|
|
|
|
#include<stdio.h>
|
|
|
|
|
void ShellSort(int* arr, int n)
|
|
|
|
|
{
|
|
|
|
|
int gap = n;
|
|
|
|
|
while (gap>1)
|
|
|
|
|
{
|
|
|
|
|
gap = gap / 2;
|
|
|
|
|
for (int i = 0; i < n - gap; ++i)
|
|
|
|
|
{
|
|
|
|
|
int end = i;
|
|
|
|
|
int tem = arr[end + gap];
|
|
|
|
|
while (end >= 0)
|
|
|
|
|
{
|
|
|
|
|
if (tem < arr[end])
|
|
|
|
|
{
|
|
|
|
|
arr[end + gap] = arr[end];
|
|
|
|
|
end -= gap;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
arr[end + gap] = tem;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
int n;
|
|
|
|
|
scanf("%d",&n);
|
|
|
|
|
int arr[n];
|
|
|
|
|
for(int i=0;i<n;i++)
|
|
|
|
|
{
|
|
|
|
|
scanf("%d",&arr[i]);
|
|
|
|
|
}ShellSort(arr,n);
|
|
|
|
|
for(int i=0;i<n;i++)
|
|
|
|
|
{
|
|
|
|
|
printf("%d ",arr[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|