1.冒泡排序算法(入门级基础)选择最大
这个算法要注意下,两层循环的含义,理解明白了,自然而然就会了。多画画图。缺点速度较慢。
#include <iostream>
using namespace std;
void BubbleSort(int list[],int n);
int main(){
int a[]={1,5,4,6,3,8,9,7,2,0};
cout<<"排序前";
for(int i=0;i<10;i++){
cout<<a[i]<<" ";
}
cout<<endl;
int n=10;
BubbleSort(a,n);
cout<<"排序后";
for(int i=0;i<10;i++){
cout<<a[i]<<" ";
}
return 0;
}
void BubbleSort(int list[],int n){
for(int i=0;i<n-1;i++){ //外层循环次数
for(int j=0;j<n-i-1;j++){//内部从零接着开始
if(list[j]>list[j+1])
std::swap (list[j],list[j+1]);
}
}
}
2.选择排序(和冒泡很像,但是速度快(一遍扫描一次交换),在冒泡进行改进)
把最小的放到左边。
#include <iostream>
using namespace std;
void SelectSort(int *a,const int n);
int main(){
int x[]={9,8,7,6,5,4,3,2,1,0};
SelectSort(x,10);
for(int k=0;k<10;k++){
cout<<x[k];
}
return 0;
}
void SelectSort(int *list,const int n){
//i<n改进成i<n-1
for(int i=0;i<n-1;i++){
int min=i;//标记最小值
for(int j=i+1;j<n;j++){
if(list[j]<list[min])
{
min=j;
}
swap(list[i],list[min]);
}
}
}
3、顺序查找,针对数据没有排序
#include <iostream> //顺序查找,针对数据没有排序
using namespace std;
int SequentialSearch(int *a,int n,const int x);
int main(){
int a[]={2,4,5,8,0,7,9,3,7};
int result;
result=SequentialSearch(a,9,99);
if(result==-1)
cout<<"没找到"<<endl;
else
cout<<result<<endl;
return 0;
}
int SequentialSearch(int *a,int n,const int x){
int i;
for(i=0;i<n;i++)
{
if(a[i]==x)
return i;
}
if(i==n) return -1;
}
4、二分查找
#include<iostream>//折半查找
using namespace std;
int BinarySearch(int *a,int x,const int n);
int main(){
int a[]={0, 1,3, 4,5,6,7,8,9};
int b=5;
int y=9;
int result;
result=BinarySearch(a,b,y);
cout<<result;
return 0;
}
int BinarySearch(int *a,int x,const int n){
int left=0;
int right =n-1;
int mid=(left+right)/2;
while(left<=right){
if(a[mid]==x){
return mid;
}
else if(a[mid]>x){
return right=mid;
}
else if(a[mid]<x){
return left=mid;
}
}
}