冒泡排序
void bubble(int arr[],int size){
for(int i = 0;i<size-1;i++){
for(int j = 0;j<((size-i)-1);j++){
if (arr[j]>arr[j+1]){
int tmp;
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] =tmp;
}
}
}
}void bubble(int* arr,int size){
int i,j;
for(i = size-1;i > 0;i--){
for(j = 0;j < i;j++){
if(arr[j] > arr[j+1]){
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}插入排序
void insert(int arr[],int size){
int i,j;
int key;
for(int i = 1;i<size;i++){
key = arr[i];
for(j = i-1;j >=0;j--){
if(arr[j]>key){
arr[j+1] = arr[j];
}else{
break;
}
}
arr[j+1] = key;
}
}选择排序
void select(int arr[],int size){
for(int i = 0;i<size-1;i++){
int min = i;
for(int j=i+1; j<size;j++){
if(arr[j]<arr[min]){
min = j;
}
}
int tmp;
tmp=arr[i];
arr[i] = arr[min];
arr[min]=tmp;
}
}快速查找
void quick(int num[],int start,int end){
int i = start; //起始下标,往后找
int j = end; //终止下标,往前找
int x = num[start]; //基准
while(i < j){
if(num[i] < x){
i++;
}
if(num[j] > x){
j--;
}
int tmp = num[i];
num[i] = num[j];
num[j] = tmp;
}
if(start-i > 0){
quick(num, start,i-1);
}
if(end-j > 0){
quick(num, j+1,end);
}
}line_find 顺序查找
折半查找
int half_find(int num[],int size,int data){
int left = 0;//查找范围的左边界
int right = size-1;//查找范围的右边界
while(left <= right){
int mid = (left + right) / 2;
if(data < num[mid]){
//向左找
right = mid - 1;
}else if(data > num[mid]){
//向右找
left = mid + 1;
}else{
//找到了
return mid;
}
}
return -1;
}