笔记1-排序
排序算法:
#include <iostream>
//冒泡排序
void bubbleSort(int array[],int size){
std::cout << "array= " << array << std::endl;
for (int end = size-1; end > 0; end--) {
for (int begin = 1; begin <= end; begin++) {
if (array[begin] < array[begin-1]) {
int tmp = array[begin];
array[begin] = array[begin-1];
array[begin-1] = tmp;
}
}
}
for(int i = 0; i < size; ++i)
{
printf("%d ", array[i]);
}
}
//优化1(如果序列已经完全有序,可以提前终止冒泡排序)
void bubbleSort1(int array[],int size){
std::cout << "array= " << array << std::endl;
for (int end = size-1; end > 0; end--) {
bool sorted = true;
for (int begin = 1; begin <= end; begin++) {
if (array[begin] < array[begin-1]) {
int tmp = array[begin];
array[begin] = array[begin-1];
array[begin-1] = tmp;
sorted = false;
}
}
if (sorted == true) {
break;
}
}
for(int i = 0; i < size; ++i)
{
printf("%d ", array[i]);
}
}
//优化2(如果序列尾部已经局部有序,可以记录最后1次交换的位置,减少比较次数)
void bubbleSort3(int array[],int size){
std::cout << "array= " << array << std::endl;
for (int end = size-1; end > 0; end--) {
int sortedIndex = 1;
for (int begin = 1; begin <= end; begin++) {
if (array[begin] < array[begin-1]) {
int tmp = array[begin];
array[begin] = array[begin-1];
array[begin-1] = tmp;
sortedIndex = begin;
}
}
end = sortedIndex;
}
for(int i = 0; i < size; ++i)
{
printf("%d ", array[i]);
}
}
//选择排序
void selectionSort(int array[],int size){
for (int end = size-1; end > 0; end--) {
int maxIndex = 0;
for (int begin = 1; begin <= end; begin++) {
if (array[maxIndex] < array[begin]) {//假定的这个数小于循环扫描的数
maxIndex = begin;
}
}
int tmp = array[maxIndex];
array[maxIndex] = array[end];
array[end] = tmp;
}
for(int i = 0; i < size; ++i)
{
printf("%d ", array[i]);
}
}
相关学习地址:
https://visualgo.net/zh 图形化算法
此文仅为鄙人学习笔记之用,朋友你来了,如有不明白或者建议又或者想给我指点一二,请私信我。liuw_flexi@163.com/QQ群:582039935.
我的gitHub: (学习代码都在gitHub)
https://github.com/nwgdegitHub/

浙公网安备 33010602011771号