1.冒泡排序
思想:将大的(小的)数冒上去,然后依次进行下去。
如:6 8 2 7 4
第一遍:62748
第二遍:26478
第三遍:24678
第四遍:24678
代码:
int arr[6]={8,2,3,4,9,7};
for(int i=0;i<5;i++){
for(int j=0;j<5;i++){
if(a[i]>a[i+1]){
int tem=a[i];
a[i]=a[i+1];
a[i+1]=tem;
}
}
}
2.选择排序
首先将第一个与其它的比较,选出最大的(最小的)作为首位,然后继续从第二个进行比较。
步骤:2 8 7 9 1 0
第一遍:087921
第二遍:018972
第三遍:012987
第四遍:012798
第五遍:012789
代码:
for(int i=0;i<5;i++){
for(int j=i+1;j<6;i++){
if(a[i]>a[j]){
int tem=a[i];
a[i]=a[i+1];
a[i+1]=tem;
}
}
}
3.遍历查找
优点:简单方便;常用于数组、链表
int sort(char *arr,char a){
char *p=arr;int i=0;
while(p){
if(*p==a){
return i;
}
p++;
i++
}
return -1;
}
以上为遍历每一个字符的代码。
最重要的是代码的可重用性、可扩展性
4.二分查找
二分查找,又称折半查找。
目的:提高查找速度(当查找性能成为一个问题时,考虑二分查找)
使用前提:(1)必须是一个数组(2)必须已经排好序
int sort(int arr[],int n,int k){
int low=0;int high=n-1;
while(low<=high){
int mid=(low+high)/2;
if(arr[mid]==k){
return mid;
}
else if(arr[mid]<k){
high=mid-1;
}else{
low=mid+1;
}
}return -1;
}
复杂度为log2N,最少1次
5.静态表查找
以空间换时间,将运算式变为查表。
事先定义一个表,将结果存入表中,然后通过查表即可。