插入排序:
适用于部分数据已经是有序的情况.
有点:
1. 实现简单
2. 数据量较小时效率高
void Insertion(intA[], int n){
int i,j,v;
for(i=2; i<=n-1; i++){
v = A[i];
j = i;
while(A[] > v && j>= 1){
A[j] = A[j-1];
j--;
}
A[j] = v;
}
}
冒泡排序
void BubbleSort(int A[], int n){
for(int pass = n-1; pass >= 0; pass--){
for(int i = 0; i < pass -1; i++){
if(A[i] > A[i+1]){
//交换元素
int temp = A[i];
A[i] = A[i+1];
A[i+1] = temp;
}
}
}
}
选择排序: 适用于小文件, 是一种原地排序算法(in-place)
void selection(int A[], int n){
int i, j , min, temp;
for(i = 0; i < n-1; i++){
min = i;
for(j = i+1; j < n; j++){
if( A[j] < A(min) )
min = j;
}
//交换元素
temp = A[min];
A[min] = A[i];
A[i] = temp;
}
}
快速排序: //TODO
=====二分法查找===========================
//1. 迭代二分法查找
int binarySearchIterative(int A[], int n, int data){
int low = 0, high = n-1;
while(low <= high){
mid = low + (high-low)/2; //避免溢出
if(A[mid] == data){
return data
}
else if(A[mid] < data){
low = mid +1;
}
else high = mid -1;
}
return -1;
}
// 2. 递归二分法查找
int binarySearchRecursive(int A[], int low, int high, int data){
mid = low + (high-low)/2; //避免溢出
if(A[mid] == data){
return mid;
}
else if(A[mid] < data){
return binarySearchRecursive(A, mid+1, high, data);
}
else{
return binarySearchRecursive(A, mid-1, high, data);
}
return -1;
}
排序/查找算法Java
最新推荐文章于 2024-10-13 16:55:28 发布