请将代码中的InsSort、ShellSort 、SelectSort、QKSort四个函数的函数体补充完整。代码如下: //直接插入排序 void InsSort(int r[], int length) /* 对记录数组r做直接插入排序,length为数组中待排序记录的数目*/ { /*添加代码*/ } /* InsSort */ //希尔排序 void ShellSort(int r[], int length, int delt[], int n) /*对记录数组r做希尔排序,length为数组r的长度,delta 为增量数组,n为delta[]的长度 */ { int i; /*添加代码 for(i=0 ; i<=n-1; ++i) */ } //简单选择排序 void SelectSort(int r[], int length) /*对记录数组r做简单选择排序,length为数组的长度*/ { /*添加代码*/ } /* SelectSort */ //快速排序 void QKSort(int r[],int low, int high ) /*对记录数组r[low..high]用快速排序算法进行排序*/ { int pos; if(low<high) { /*添加代码*/ } }
时间: 2024-04-29 20:20:11 浏览: 16
//直接插入排序
void InsSort(int r[], int length)
{
int i, j, temp;
for(i=1; i<length; ++i)
{
temp = r[i];
for(j=i-1; j>=0 && r[j]>temp; --j)
{
r[j+1] = r[j];
}
r[j+1] = temp;
}
}
//希尔排序
void ShellSort(int r[], int length, int delt[], int n)
{
int i, j, k, gap, temp;
for(k=0; k<n; ++k)
{
gap = delt[k];
for(i=gap; i<length; ++i)
{
temp = r[i];
for(j=i-gap; j>=0 && r[j]>temp; j-=gap)
{
r[j+gap] = r[j];
}
r[j+gap] = temp;
}
}
}
//简单选择排序
void SelectSort(int r[], int length)
{
int i, j, min, temp;
for(i=0; i<length-1; ++i)
{
min = i;
for(j=i+1; j<length; ++j)
{
if(r[j] < r[min])
{
min = j;
}
}
if(min != i)
{
temp = r[i];
r[i] = r[min];
r[min] = temp;
}
}
}
//快速排序
void QKSort(int r[], int low, int high)
{
int i = low, j = high, pivot = r[low];
while(i < j)
{
while(i < j && r[j] >= pivot)
{
--j;
}
if(i < j)
{
r[i++] = r[j];
}
while(i < j && r[i] <= pivot)
{
++i;
}
if(i < j)
{
r[j--] = r[i];
}
}
r[i] = pivot;
if(low < i-1)
{
QKSort(r, low, i-1);
}
if(i+1 < high)
{
QKSort(r, i+1, high);
}
}