查找算法和排序算法的归纳总结

查找算法:有序查找(时间复杂度: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;
    }
   }
  }
 }

点赞