Compare commits

...

2 Commits

@ -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]);
}
}
Loading…
Cancel
Save