C++中的冒泡排序,选择排序,插入排序
2014-11-23 20:49
225 查看
最简单的插入排序:思想,两两之间比较,时间复杂度o(n^2)
2.选择排序,思想:假定每轮循环的第一个元素为最值,然后从后面未排序的元素中挑选出最值,与之交换.
3.插入排序,思想:每次都从未排序的集合中,取一个元素插入到已经排好序的数组中,注意用数组和用vector时判断条件的区别
void bubblesort(vector<int>&vec, int n) { if (&vec==NULL) return; int temp; bool flag; for (int i = 0; i < n - 1; i++)//外层循环控制循环次数 { flag = false;//判断是否有序的标志 for (int j = 0; j < n - 1 - i; j++)//内层循环控制边界 { if (vec[j]>vec[j + 1]) { temp = vec[j]; vec[j] = vec[j + 1]; vec[j + 1] = temp; flag = true; } } if (!flag) break; } }
2.选择排序,思想:假定每轮循环的第一个元素为最值,然后从后面未排序的元素中挑选出最值,与之交换.
void selectsort(vector<int>&vec, int n) { if (&vec == NULL) return; int key; int min; int temp; for (int i = 0; i < n - 1; i++)//外层控制循环次数 { key = vec[i]; min = i; for (int j = i + 1; j < n; j++)//内层控制循环的边界 { if (vec[j] < key) { min = j;//记录最小值的索引值 key = vec[j];//记录最小值 } } if (min != i)//如果有变化,则交换 { temp = vec[i]; vec[i] = vec[min]; vec[min] = temp; } } }
3.插入排序,思想:每次都从未排序的集合中,取一个元素插入到已经排好序的数组中,注意用数组和用vector时判断条件的区别
void insertsort(vector<int>&vec, int n)//这里必须传递引用,因为这是一个类对象,不同于数组 { if (&vec == NULL) return; int key; for (int i = 1; i < n; i++) { key = vec[i];//暂存要插入的值 int j = i;//暂存要插入的下标 while (j>0&&key < vec[j - 1])//注意:换成 while(key<vec[j-1]&&j>0)则报错,而如果是数组则没问题,因为vector检查更严格,更安全,不允许vec[-1]的出现(下标越界). { vec[j] = vec[j - 1];//依次往后移动一位 j--; } if (i!=j)//如果下标有变化,说明插入位置有变,需要重新插入 vec[j] = key; } }
相关文章推荐
- [C++]数据结构:排序算法Part1----冒泡排序、选择排序、插入排序、堆排序
- C++实现冒泡排序,选择排序,插入排序,快速排序,归并排序
- C++基于链表 指针的插入排序,冒泡排序,选择排序,计数排序
- [C++]数据结构:排序算法Part1----冒泡排序、选择排序、插入排序、堆排序
- C++ 选择排序、冒泡排序、插入排序
- 插入排序、冒泡排序、选择排序、希尔排序、快速排序、归并排序、堆排序和LST基数排序——C++实现
- C++ ------------排序算法(冒泡排序-快速排序-选择排序-插入排序-希尔排序)
- 插入排序、冒泡排序、选择排序、希尔排序、高速排序、归并排序、堆排序和LST基数排序——C++实现
- C++各种常见排序算法 冒泡排序,插入排序,快排序,选择排序,希尔排序
- 选择排序、冒泡排序、插入排序、基数排序、快速排序、归并排序完整C++实现
- 冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
- 排序的四种写法包括(冒泡排序,选择排序,插入排序,希尔排序)
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
- java实现 冒泡排序 插入排序 选择排序
- 冒泡排序、选择排序和插入排序
- C#冒泡排序、选择排序、插入排序和希尔排序
- 三种最基本的排序 选择排序 插入排序 冒泡排序
- 基础排序算法(冒泡排序、选择排序、插入排序)
- C#排序算法:冒泡排序 选择排序 插入排序 希尔排序