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 ...
随机推荐
- Shell脚本IF条件判断和判断条件总结
转自:http://m.jb51.net/article/56553.htm 这篇文章主要介绍了Shell脚本IF条件判断和判断条件总结,本文先是给出了IF条件判断的语法,然后给出了常用的判断条件总结 ...
- 网络存储技术介绍(2) ( based on zt)
http://www.educity.cn/tx/429084.html 互联网技术DAS.NAS和SAN存储方案的比较 按照设备位置和接入方式,磁盘存储可以分为内置存储和外挂存储,外挂存储又分为直连 ...
- AX2009按照批次生产日期预留
AX2009如果想按照批处理号预留,它默认是按照InventBatchId排序的,但并不是InventBatchd小的批次的生产日期就早,所以这个逻辑得改一下,让它按照InventBatch的Prod ...
- [转]df命令
linux中df命令参数功能:检查文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 语法:df [选项] 该命令各个选项的含义如下: -a 显示所有文件 ...
- JS星座判断(关于日期)
JS根据日期判断所属星座 效果如下: 完整代码如下: <!DOCTYPE html> <html > <head> <link rel="style ...
- JavaScript小功能
1. JS判断是否为一个有效日期 1 2 3 4 function check(date){ return (new Date(date).getDate()==date.substring( ...
- Select查询语句2
一.模糊查询 1.语法结构 select*from table_name where column like '%context%' 在使用like运算符时如果不使用通配符“%”,则like的作用与= ...
- RHEL7网络管理之nmcli
在RHEL7中默认使用NetworkManager 守护进程来监控和管理网络设置.nmcli是命令行的管理NetworkManager的工具,会自动把配置写到/etc/sysconfig/networ ...
- mysql处理字符串
1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my_con ...
- Java写操作
//:ThinkingInJava/net.mindview.io/write2File.java package net.mindview.io; import java.io.BufferedRe ...