C语言中排序方法
学习目的
今天我们学习了三种排序方法:冒泡排序法、选择排序法、插入排序法。
相关技术,及其实用
为什么会使用排序:
为了是想同类型的不同数据按照想要的顺序输出。
怎么用:
冒泡法、选择法、插入法
冒泡排序法:通过一次排序,使最大的沉底。例如:
int num[] = { 3,0,1,8,7,2,5,4,9 };
for (int i = 0; i < 10; i++) {//外层循环 比较的次数
for (int j = 0; j < 10- i-1; j++) {//内层循环 如何比较
if (num[j] > num[j + 1]) {
//交换j 和j+1 的值
int temp = num[j+1];
num[j + 1] = num[j];
num[j] = temp;
}
}
}
选择排序:一次取出一个值,默认他是最小的,如果发现不是这个数最小就交换,便利整个数组,找到一个最小的。例如:
int num[] = { 3,0,1,8,7,2,5,4,9 };
for (int i = 0; i < 10 - 1; i++) {
//默认这是最小的
for (int j = i + 1; j < 10 - 1; j++) {
//控制用min和后面的每一个进行比较
if (num[i] > num[j]) {
//j对应的数字比min还小 交换
int temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
//一次遍历后找到最小的值
}
插入排序:取出一个数,把他从开始到最后一直比较,比较合适就插进去,进行排序、边插边排。例如:
//插入排序法
//寻找这个数字对应的位置
int j = 0;
for (; j < i; j++) {
//j对应的数字和产生的数字进行比较
if (temp < originalArray[j]) {
//j后面的内容往后移动 腾出空间
for (int k = i; k > j; k--) {
originalArray[k] = originalArray[k - 1];
}
break;
}
}
//保存到数组里面去
originalArray[j] = temp;
}
同时,可以看出数组在排序方法里面的缺点:虽然访问方便,但插入和删除效率不高。
感想
虽然学习了这三种排序方法知道了一些用法,但是,当要运用这些方法时,就感觉一脸懵,不知道选择哪种排序方法更加的简便,还是不够清楚明了。同时呢,在逻辑思维方面还出现很大的不足,拿到一个demo只知道有具体有那几个大部分,但是在大部分里面就不知道如何去实现。比如:在具体实现时,就拿猜数字的demo 来说,当写到如何实现怎么进行移动时,具体的代码如何实现就是一脸懵,难啊。
网友评论