#include "math.h"
//冒泡排序法
void BubbleSort(int* array,int length)
{
int i,j;
for(i=length; i>0; i--)
{
for(j=0; j<i-1; j++)
{
if(array[j] > array[j+1])
{
array[j] = array[j] + array[j+1];
array[j+1] = array[j] - array[j+1];
array[j] = array[j] - array[j+1];
}
}
}
}
//快速排序法中使用的分区间子算法
int Partition(int *array, int low, int high)
{
int pivotValue = array[low];
while(low < high)
{
while(low<high && array[high]>=pivotValue)
high--;
array[low] = array[high];
while(low<high && array[low]<=pivotValue)
low++;
array[high] = array[low];
}
array[low] = pivotValue;
return low;
}
//快速排序
void QuickSort(int *array, int low, int high)
{
int pivot;
if(low < high)
{
pivot = Partition(array, low, high);
QuickSort(array, low, pivot-1);
QuickSort(array, pivot+1, high);
}
}
//直接插入排序算法
void QuickInsertSort(int *array, int length)
{
int iTemp;
if(length <=1)
return;
for(int i=1; i<length; i++)
{
if(array[i]<array[i-1])
{
iTemp = array[i];
for(int j=i-1; j>=0 && array[j]>iTemp; j--)
{
array[j+1] = array[j];
}
array[j+1] = iTemp;
}
}
}
//一趟希尔排序子算法
void ShellInsert(int *array, int dk, int length)
{
int iTemp;
if(dk >= length)
return;
for(int i=dk; i<length; i++)
{
if(array[i]<array[i-dk])
{
iTemp = array[i];
for(int j=i-dk; j>=0 && array[j]>iTemp; j-=dk)
{
array[j+dk] = array[j];
}
array[j+dk] = iTemp;
}
}
}
//希尔排序算法(对于直接插入排序的一种改进算法)
void ShellSort(int *array, int dlta[], int t, int length)
{
for(int k =0; k<t; k++)
{
ShellInsert(array, dlta[k], length);
}
}
//输出3-100之间的所有素数。
void PrimeNum(int iNumber)
{
int k;
if(iNumber ==2)
printf(" 2 ");
else
{
for(int i=3; i<=iNumber; i+=2)
{
k=sqrt(i);
for(int j=2; j<k; j++)
{
if(i%j==0) break;
}
if(j>=k)
printf(" %d ", i);
}
}
}
// 写一个函数,求一个整数的平方根
/*
* 求a根的迭代公式为:
Xn+1=1/2*(Xn+a/Xn) 要求Xn和Xn+1的绝对差<1e-5;
*/
int MySqrt(void )
{
float a,b,c;
scanf("%f",&a);
b=a/2.0;
c=1.0/2*(b+a/b);
while(fabs(b-c)>1e-5)
{
b=1.0/2*(c+a/c);
c=1.0/2*(b+a/b);
}
printf("a root is %f",b);
return 0;
}
排序算法
最新推荐文章于 2024-09-22 11:42:19 发布