冒泡排序和选择排序算法
定义两个变量用来指向数组元素:i,j
冒泡排序:
两两加1循环比较,大的一致交换,直达最后
两两加1循环,如果i的位置大于j的位置的元素,交换
int main(){ int arr[]={12,34,3,32,23,1,232}; int i=0,j=0,len=sizeof(arr)/sizeof(int); int temp,jlen=len; for(;i<len;++i){ cout<<arr[i]<<" "; } cout<<endl; for(i=0;i<len-1;++i){ for(j=0;j<jlen-1;++j){ if(arr[j]>arr[j+1]){ temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } jlen--; } for(i=0;i<len;++i){ cout<<arr[i]<<" "; } return 0; }
冒泡排序优化
1,如果循环一轮,没有交换--即原数组已经有序,就不再循环,直接退出。
选择排序
定位首位置
1,每一次循环到最后找到最小元素的位置,再把最小元素和每一次循环的首位置元素交换。
2,每一次循环,两两比较,把小的放在每次循环首位置,直到循环比较到最后一个元素。
两种方法都可以完成,但是1的效率高