网站 配色方案,建设一个门户网站 费用,网站的开发语言,宿迁二手房个人出售最新消息Linux C语言 33-排序算法
本节关键字#xff1a;C语言 排序算法 选择排序 冒泡排序 快速排序 相关C库函数#xff1a;
冒泡排序
冒泡排序#xff08;英语#xff1a;Bubble Sort#xff09;是一种简单的排序算法。它重复地走访过要排序的数列#xff0c;一次比较两个元…Linux C语言 33-排序算法
本节关键字C语言 排序算法 选择排序 冒泡排序 快速排序 相关C库函数
冒泡排序
冒泡排序英语Bubble Sort是一种简单的排序算法。它重复地走访过要排序的数列一次比较两个元素如果它们的顺序如从大到小、首字母从A到Z错误就把他们交换过来。
void BubbleSort(int* a, int n)
{for (int i 0; i n; i){int exchange 0;// 单趟for (int j 1; j n - i; j){if (a[j - 1] a[j]) {exchange 1;Swap(a[j - 1], a[j]);}}if (exchange 0) //已经有序了break;}
}选择排序
选择排序Selection sort是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小大元素存放到排序序列的起始位置然后再从剩余未排序元素中继续寻找最小大元素然后放到已排序序列的末尾。以此类推直到所有元素均排序完毕。
void SelectSort(int* a, int n)
{int left 0;int right n - 1;while (leftright){int mini left, maxi left;for (int i left1; i right; i){if (a[i] a[mini]) mini i;if (a[i] a[maxi])maxi i;}Swap(a[mini], a[left]);if (maxi left) //防止掉包很容易漏很重要maxi mini;Swap(a[maxi], a[right]);left;right--;}
}快速排序
在区间中随机挑选一个元素作基准将小于基准的元素放在基准之前大于基准的元素放在基准之后再分别对小数区与大数区进行排序。
void QuickSort(int* a, int begin, int end)
{// 子区间相等只有一个值或者不存在那么就是递归结束的子问题if (begin end)return;if (end - begin 1 13){InsertSort(a begin, end - begin 1);} else{int keyi PartSort3(a, begin, end);// [begin, keyi-1]keyi[keyi1, end];QuickSort2(a, begin, keyi - 1);QuickSort2(a, keyi 1, end);}
}插入排序
待补充 …
希尔排序
待补充 …