C语言实战开发第六节课

排序: 冒泡排序
插入排序
选择排序
快速排序

    优酷搜索 :舞动的排序 

排序实现方式:(程序里面尽量做到循环层级少于等于两个 )
一个循环:一次遍历就结束
两个循环:每一次内部又有循环

冒泡排序实现方式:每次遍历整个数组,找到最大的一个数沉底
如果数组有N个元素
第一次需要遍历N-1次(沉第一个数据)
第二次需要遍历N-2次 (沉第二个数据)
第三次需要遍历N-3次(沉第三个数据)
。。。
总共需要比较N-1次

代码如何实现
两层循环:第一层循环控制总共需要遍历多少次
3 0 1 8 7 2 5 4 9 6
10个元素只需要遍历10-1次就能排好序

          第二层循环控制每次遍历需要遍历多少次才能找到最大值 
          每次从头i = 0开始,让i和i+1进行比较,确保i+1是最大的 

选择排序:外层循环控制需要遍历多少次(n-1)
内层循环遍历出当前最小的数

//冒泡排序
int main(){
int num[10] = {3,0,1,8,7,2,5,4,9,6};

for(int i = 1; i < 10; i++){//控制总共遍历次数
    //开始每一次遍历 找到一个最大的数沉底 
    for(int j = 0; j < 10-i; j++){
        //让j和j+1的值进行比较
        if(num[j] > num[j+1]){
            //交换j和j+1的值
            int temp = num[j];
            num[j] = num[j+1];
            num[j+1] = temp;                 
        } 
    } 
}

//输出 
for(int i = 0; i < 10; i++){
    printf("%d ", num[i]);
}

return 0;

}

//选择排序
int num[10] = {3,0,1,8,7,2,5,4,9,6};

for(int i = 0; i < 10-1; i++){//控制次数 
    //取出i对应的数,默认是最小的数
    int temp = num[i];
     
    //从i后面开始查找当前最小的数 放到i的位置 
    for(int j = i+1; j < 10; j++){
        //让temp和i后面的每个数进行比较 
        //temp始终保存最小的那个数
        if(num[j] < temp){
            //交换
            int n = temp;
            temp = num[j];
            num[j] = n; 
        } 
    } 
    //当前的temp值是最小的,写入i对应的位置
    num[i] = temp; 
}

//输出
for(int i = 0; i < 10; i++){
    printf("%d ", num[i]);
} 
return 0; 

}

//插入排序
int num[10] = {3,0,1,8,7,2,5,4,9,6};

for(int i = 0; i < 10-1; i++){//控制次数 
    //判断i和i+1的大小
    if(num[i] > num[i+1]){
        //换位置
        int temp = num[i];
        num[i] = num[i+1];
        num[i+1] = temp;
        
        //让i对应的值和前面所有的值进行比较
        for (int j = i; j > 0; j--){
            //j和j-1进行比较
            if(num[j] > num[j-1]){
                //当前这个位置就是这个数字的位置 
                break;
            } else{
                //j和j-1换位置
                int temp = num[j];
                num[j] = num[j-1];
                num[j-1] = temp; 
            } 
        } 
    } 
} 

//输出
for(int i = 0; i < 10; i++){
    printf("%d ", num[i]);
} 
return 0;

}

你可能感兴趣的:(C语言实战开发第六节课)