PPC的C/C++和人工智能学习笔记
每一篇学习笔记,都只是为了更好地掌握和理解

C语言基础(22)_排序(1)

今天学习:排序算法(选择排序、冒泡排序、插入排序)

 

选择排序:

每次选择一个最小的,放在前面。

 

冒泡排序:

靠近的比较,小的向前移动。

 

插入排序:

把数据分为已序和乱序两个部分,从乱序中取出数据,放到已序的数据中。

 

//排序算法1:
#include <stdio.h>

void SelectSort(int * arr, size_t length); //选择排序
void BubbleSort(int * arr, size_t length); //冒泡排序
void InsertSort(int * arr, size_t length); //插入排序
int main() 
{
 int arr[10] = { 3, 2, 1, 4, 0, 9, 7, 8, 6, 5 };
 //SelectSort(arr, 10);
 //BubbleSort(arr, 10);
 InsertSort(arr, 10);
 for (int i = 0; i < 10; i++)
 printf("%d ", arr[i]);
 return 0;
}

void SelectSort(int * arr, size_t length) //选择排序
{
 for (size_t i = 0; i < length - 1; ++i)
 {
 for (size_t j = i + 1; j < length; ++j)
 {
 if (arr[i] > arr[j])
 {
 int tmp = arr[i];
 arr[i] = arr[j];
 arr[j] = tmp;
 }
 }
 }
}

void BubbleSort(int * arr, size_t length) //冒泡排序
{
 for (size_t i = 0; i < length - 1; ++i)
 {
 for (size_t j = 0; j < length - 1 -i; ++j)
 {
 if (arr[j] > arr[j + 1])
 {
 int tmp = arr[j];
 arr[j] = arr[j+1];
 arr[j+1] = tmp;
 }
 }
 }
}

void InsertSort(int * arr, size_t length) //插入排序
{
 for (size_t i = 1; i < length; ++i)
 {
 int tmp = arr[i];
 for (int j = i ; j >= 0; --j) //注意:这里不能用 size_t定义j
 {
 if (tmp < arr[j - 1])
 {
 arr[j] = arr[j - 1];
 }
 else
 {
 if(i!=j)
 arr[j] = tmp;
 break;
 }
 }
 }
}

 

 

(2017-04-08 www.vsppc.com)

学习笔记未经允许不得转载:PPC的C/C++和人工智能学习笔记 » C语言基础(22)_排序(1)

分享到:更多 ()

评论 72

评论前必须登录!