查找算法:有序查找(时间复杂度:O(n)),二分查找(时间复杂度:O(logN))
有序查找算法实现:
public int search(int searcher)
{
for(int i=0;i<n;i++)
if(a[i]==searcher)return i;
return n;
}
二分查找算法实现:
public int binary_search(int searcher)
{
int low=0;
int high=n-1;
int mid=(low+high)/2;
while(low<=high)
{
if(sort[mid]==searcher)return mid;
if(sort[mid]>searcher)high=mid-1;
else
if(sort[mid]<searcher)low=mid+1;
mid=(low+high)/2;
}
return -1;
}
排序算法:冒泡排序(时间复杂度:O(n2)),选择排序(时间复杂度:O(n2)),插入排序(时间复杂度:O(n2)),虽然三种的时间复杂度都是O(n2),但三者中插入排序算最好的
冒泡排序算法实现:
public void sort()
{
for(int i=n-1;i>0;i–)
for(int j=0;j<i;j++)
{
if(sort[j]>sort[j+1])
{
temp=sort[j];
sort[j]=sort[j+1];
sort[j+1]=temp;
}
}
}
选择排序算法实现:
public void sort()
{
for(int i=0;i<n-1;i++)
{
min=i;
for(int j=i+1;j<n;j++)
{
if(sort[min]>sort[j])
{
min=j;
}
}
if(min!=i)
{
temp=sort[i];
sort[i]=sort[min];
sort[min]=temp;
}
}
}
插入排序算法实现:
public void sort()
{
for(int i=1;i<n;i++)
{
if(sort[i]<sort[i-1])
{
for(int j=i;j>0;j–)
{
if(sort[j]<sort[j-1])
{
temp=sort[j];
sort[j]=sort[j-1];
sort[j-1]=temp;
}
else continue;
}
}
}
}