强的网站建设,餐饮网络营销方式,有必要代理网页的网址,cctv5+手机在线直播观看题目#xff1a;给一组整数#xff0c;按照升序排序#xff0c;使用选择排序#xff0c;冒泡排序#xff0c;插入排序或者任何 O(n2) 的排序算法1、冒泡排序原理#xff1a;从第一个整数开始第一趟#xff0c;比较相邻的两个元素#xff0c;大的放在后面#xff1b;一…题目给一组整数按照升序排序使用选择排序冒泡排序插入排序或者任何 O(n2) 的排序算法1、冒泡排序原理从第一个整数开始第一趟比较相邻的两个元素大的放在后面一轮结束后最大的数沉底重复这一过程完整n-1趟。所以有两个循环外循环决定第几趟、从第几个元素开始比较内循环是比较相邻两个元素大小决定要不要交换。
class Solution
{
public:/** param A: an integer array* return: */void sortIntegers(vectorint A){int temp 0;if(A.size()!0)//判断是否为空数组{for(int i0; iA.size()-1; i)//外循环只比较A.size()-1趟for(int ji1; jA.size(); j)//内循环从i1开始{if(A[i] A[j]){temp A[j];//交换A[j] A[i];A[i] temp;}}}}
};
2、插入排序 原理第一趟把第一个元素当做有序序列用第二个和第一个比将大的放在后面第二趟把前两个元素当做有序序列用第三个元素跟第二个比大的放后面再用第二个跟第一个比大的放后面第三趟把前三个当做有序序列用第四个元素跟第三个比再用第三个跟第二个比第二个跟第一个比......以此类推。两个循环外循环决定从无序序列开始内循环进行从后往前的两两比较和交换。
class Solution
{
public:/*** param A an integer array* return void*/void sortIntegers(vectorint A) {int temp 0;for (int i 1; i A.size(); i) //从第二个元素开始{while (i 0 A[i] A[i - 1])//当该元素前面还有元素且比前面的数小就进行下面的交换{temp A[i];A[i] A[i-1];A[i-1] temp;--i;//递减往前比较}}}
};
3、选择排序 原理遍历整个数组对于当前位置i定义一个变量min_idx用来记录当前位置往后的最小的坐标并通过遍历以后所有的数字来找这个最小的坐标然后交换A[i]和A[min_idx]。 外循环定义当前位置内循环找到当前往后最小的元素坐标。从第一个元素开始选择后面元素里面最小的一个和第一个元素交换直到最后一个元素。
class Solution
{
public:/*** param A an integer array* return void*/void sortIntegers(vectorint A) { for (int i 0; i A.size(); i) {int min_idx i;for (int j i 1; j A.size(); j) {if (A[j] A[min_idx]) {min_idx j;}}swap(A[i], A[min_idx]);}}
}; 参考
lintcode整数排序