冒泡排序和选择排序算法

定义两个变量用来指向数组元素: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的效率高

经验分享 程序员 微信小程序 职场和发展