简单排序算法--冒泡,插入,选择排序

简单排序算法:

        我们来一起讨论3种简单的排序算法。(VS2013中进行编写)

冒泡排序:

#include<stdio.h>
#include<stdlib.h>
#define n 3                               //定义一个宏方便后面改数组的大小。
int main(){
   int i, j, temp;
   int enter_num[n];                      //定义一个Int型的数组,方便储存数据。
   for (i = 0; i < n; i++){
      scanf_s("%d", &enter_num[i]);
  }
   for (i = 0; i < n - 1; i++){           //冒泡法排序的核心。
      for (j = i + 1; j < n; j++){
          if (enter_num[i] < enter_num[j]){//交换两个变量的值。
            temp = enter_num[i];
            enter_num[i] = enter_num[j];
            enter_num[j] = temp;
     }
   }
 }
   printf("排序完后的数:\n");
   for (i = 0; i < n; i++){              //遍历输出数组。
      printf("%d\n", enter_num[i]);
 }
   system("pause");
   return 0;
}

每进行一趟排序,就把最大的数放到序列的最后面,依次循环,直到最后排序成功。``
简单排序算法--冒泡,插入,选择排序
接下来,我们再讨论一下这个

选择排序:

#include<stdio.h>
#include<stdlib.h>
#define n 3
int main(){
   int i, j, temp, k;
   int enter_num[n];
   for (i = 0; i < n; i++){
      scanf_s("%d", &enter_num[i]);
 }
   for (i = 0; i < n - 1; i++){             //选择排序的核心:
      k = i;                                //每次将那个最大数值的序号放到k中,最后依次与enter_num[i]再进行交换即可。
   for (j = i + 1; j < n; j++){
        if (enter_num[k] < enter_num[j]){
              k = j;
    }
        temp = enter_num[i];
        enter_num[i] = enter_num[k];
        enter_num[k] = temp;
    }
 }
    printf("排序完后的数:\n");              //遍历输出数组。
    for (i = 0; i < n; i++){
       printf("%d\n", enter_num[i]);
 }
    system("pause");
    return 0;
}

最后就是我们比较简单的,而且稳定性还挺好的,

插入排序:

#include<stdio.h>
#include<stdlib.h>
#define n 3
int main(){
   int i, j, temp;
   int enter_num[n];
   for (i = 0; i < n; i++){
      scanf_s("%d", &enter_num[i]);
 }
   for (i = 1; i < n; i++){               //插入排序:
   for (j = i; j > 0 && enter_num[j] < enter_num[j - 1]; j--){
      temp = enter_num[j];                //交换两个值的变量。
      enter_num[j] = enter_num[j - 1];
      enter_num[j - 1] = temp;
    }
 }
   printf("排序完后的数:\n");              //遍历输出数组。
    for (i = 0; i < n; i++){
       printf("%d\n", enter_num[i]);
 }
   system("pause");
   return 0;
}

插入排序:(思路)
例如,我们都打过扑克,打扑克牌就需要每摸一张牌,进行整牌。现在,假设我们现在手里有一张牌,然后,你要再摸一张牌,进行整牌,你会拿这这个牌和手里的牌比较,如果它比手里的牌小,则放到它的前面,如果比它大,则放到它的后面。随着手里的牌数量增多,你在进行整理的时候,你依然需要从后面向前面依次进行扫描,进行比较大小,等到找到了比前面的牌小的时候,这时,你只需要把它后面所有的牌向后错一位,再把它插进去即可完成插入排序。算法实现见上面代码。

;