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 ...
随机推荐
- PHP中使用Session配合Javascript实现文件上传进度条功能
Web应用中常需要提供文件上传的功能.典型的场景包括用户头像上传.相册图片上传等.当需要上传的文件比较大的时候,提供一个显示上传进度的进度条就很有必要了. 在PHP .4以前,实现这样的进度条并不容易 ...
- php中好用的时间函数
//查询数据30天的数据$y=date("Y",time());$m=date("m",time());$d=date("d",time() ...
- oracle 认证方式
Oracle登录的时候有两种认证方式,一种是“操作系统认证”,一种是“口令文件认证”.1.当采取操作系统认证的时候,在本地用任何用户都可以以sysdba登陆:(默认方式)2.当采取口令文件认证的时候, ...
- oracle必须启动哪些服务?
对新手来说,要是只用Oracle自带的sql*plus的话,只要启动OracleServiceORCL即可,要是使用PL/SQL Developer等第三方工具的话,OracleOraDb11g_ho ...
- mongodb账号安全操作
安装服务 mongod --install --serviceName mongodb --storageEngine=mmapv1 --dbpath i:\mongodb\data --journa ...
- mgo中DBRef-数据查询测试
下午对数据查询进行了代码测试: package main import ( "crypto/rand" "encoding/hex" "fmt&quo ...
- 自定义控件EditText
public class defineEditText extends EditText { Context context; Drawable d; public defineEditText(Co ...
- python(第五步django)
这是一个关于,web开发的库, 下一步需要重点掌握的是,网页跳转和数据展示,和面向对象的关系的重用的内容 1:目前掌握的是project 的创建,和app的创建, 2:
- IE 下JS和CSS 阻塞后面内容总结
总结: 1. CSS 都是可以并行下载的. 2. IE6 和 IE7 JS 不能并行下载,CSS 和 JS 阻塞后面内容下载. 3. IE8 JS 还是会阻塞图片下载 开始改变加载模式, ...
- CodeForces 607C (DP) Hard problem
题目:这里 题意:给定n个字符串,每个字符串可以进行一项操作,就是将这个字符串交换,就是该字符串的第一个和最后一个交换,第二个和倒数第二个交换,以此类推,当然可以选择对于 该字符串进行或不进行这项操作 ...