LintCode 整数排序
题目:给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。
1.冒泡:从头开始,比较相邻的两个元素,大的放在后面。一轮结束之后,最大的数沉底,不参与下一轮比较。重复 直至待排序的元素个数为1。
class Solution { public: /*** @param A an integer array @return void*/
void sortIntegers(vector<int>& A) {
if(A.size()!=0)//一定要进行判断,否则A中无元素时不成立
{for (int i = 0; i < A.size()-1; i++)
{ for (int j = 0; j < A.size()-1-i; j++)
{if (A[j] > A[j+1])
{A[j]^=A[j+1];
A[j+1]^=A[j];
A[j]^=A[j+1];
}
}
}
}
}
};
优化的冒泡:序而不排
class Solution { public: /*** @param A an integer array @return void*/ void sortIntegers(vector<int>& A) {
if(A.size()!=0)//一定要进行判断,否则A中无元素时不成立 {
for (int i = 0; i < A.size()-1; i++) {
int flag=0;//标志位
for (int j = 0; j < A.size()-1-i; j++) {
if (A[j] > A[j+1]) {
A[j]^=A[j+1];
A[j+1]^=A[j];
A[j]^=A[j+1];
flag=1;
}
}
if(flag==0)
break;
}
}
}
};
2.选择排序:取首元素,同其后所有的元素一一比较,若大就交换。一轮之后,首元素有序,之后在重复。
class Solution { public: /*** @param A an integer array @return void*/
void sortIntegers(vector<int>& A) {
if(A.size()!=0)//一定要进行判断,否则A中无元素时不成立
{for (int i = 0; i < A.size()-1; i++)
{ for (int j = i+1; j < A.size(); j++)
{if (A[i ]> A[j])
{A[i]^=A[j];
A[j]^=A[i];
A[i]^=A[j];
}
}
}
}
}
};
选择优化:比而不换(只记录下标)
class Solution { public: /*** @param A an integer array @return void*/
void sortIntegers(vector<int>& A) {
if(A.size()!=0)//一定要进行判断,否则A中无元素时不成立
{ int idx;
for (int i = 0; i < A.size()-1; i++)
{ idx=i;
for (int j = i+1; j < A.size(); j++)
{
if(A[idx]>A[j]
idx=j;
}
if(idx!=i)
{A[i]^=A[idx];
A[idx]^=A[i];
A[i]^=A[idx];}
}
}
}
}
};
LintCode 整数排序的更多相关文章
- bitmap对海量无重复的整数排序--转
原文地址:http://blog.csdn.net/u013074465/article/details/46956295 现在有n个无重复的正整数(n 小于10的7次方),如果内存限制在1.5M以内 ...
- 考查SQLite 3索引对整数排序的性能影响
做个实验,想了解SQLite3索引对整数排序的性能影响. 用这个测试表,考查绿色那列: id name date 自增型主键 字符串型,随机生成 整数型 随机生成,范围0到54354354 1 bMz ...
- C语言:10个整数排序(别忘了负数)
题目内容: 10个整数排序(别忘了负数) 例如 input 1 0 2 0 3 4 1 9 8 7 output 0 0 1 1 2 3 4 7 8 9 编码: void sort(int *a); ...
- YTU 2427: C语言习题 整数排序
2427: C语言习题 整数排序 时间限制: 1 Sec 内存限制: 128 MB 提交: 391 解决: 282 题目描述 用指向指针的指针的方法对n个整数排序并输出.要求将排序单独写成一个函数 ...
- 九度oj 题目1190:大整数排序
题目1190:大整数排序 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4142 解决:1867 题目描述: 对N个长度最长可达到1000的数进行排序. 输入: 输入第一行为一个整数N,( ...
- 【九度OJ】题目1190:大整数排序 解题报告
[九度OJ]题目1190:大整数排序 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1190 题目描述: 对N个长度最长可达 ...
- lintcode:整数排序||
题目 给一组整数,按照升序排序.使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法. 解题 归并排序 public class Solution { /** * @param ...
- [LintCode] Sort Integers II 整数排序之二
Given an integer array, sort it in ascending order. Use quick sort, merge sort, heap sort or any O(n ...
- [LintCode] Sort Integers 整数排序
Given an integer array, sort it in ascending order. Use selection sort, bubble sort, insertion sort ...
随机推荐
- input元素垂直居中
chrome,firefox,safari, ie9+ 会根据高度自动居中文字: IE9- 以下用这段代码垂直居中: input[type="text"] { line-heigh ...
- ssh通道技术
所有机器均为Linux操作系统. 机器是A,中间服务器为B,目标服务器是C. 从A可以ssh到B,从B可以ssh到C,但是A不能直接ssh到C. 现在展示利用ssh通道技术从A直接传输文件到C. ...
- Windows7 IE10运行不了JavaScript的问题
如题,我的环境是Windows7 + IE10,JavaScript怎么也运行不了.郁闷了好一段时间. 后来发现一种办法终于可以让JavaScript运行起来. 具体: 点击 [工具] => ...
- TIJ读书笔记06-终结清理和垃圾回收
TIJ读书笔记06-终结清理和垃圾回收 finalize()方法 垃圾回收器如何工作 java的垃圾回收是由jvm来控制的.所以需要java程序员参与的部分不是很多. 但是在这里需要明白一点,java ...
- Java第一天学习笔记整理
一.关键字 java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名.方法名.类名.包名. 常见的关键字: 用于定义数据类型的关键字 cla ...
- cursor
BeginWaitCursor(); // display the hourglass cursor // do some lengthy processing Sleep(3000); EndWai ...
- dmesg
在开机的时候你会发现有很多的讯息出现吧,例如 CPU 的形式.硬盘. 光盘型号及硬盘分割表等等,这 些信息的产生都是核心 (kernel) 在进行硬件的测试与驱动啦.要看这些讯息你可以用 dmesg ...
- 关于git新建本地分支与远程分支关联问题
背景 新建本地分支并推送到远端后,当前分支没有与远端分支关联,每次推送都需要填写一堆信息. 操作 git branch --set-upstream-to=origin/20160928 切换到本地分 ...
- ZT 趋势移动安全apk
趋势移动安全 应用截图 应用简介 趋势移动安全( Mobile Security) 是一款专业的Android移动安全软件.利用趋势科技世界领先的云安全技术,保护用户避免被移动恶意程序骚扰,避免个 ...
- 内存屏障(Memory barrier)-- 转发
本文例子均在 Linux(g++)下验证通过,CPU 为 X86-64 处理器架构.所有罗列的 Linux 内核代码也均在(或只在)X86-64 下有效. 本文首先通过范例(以及内核代码)来解释 Me ...