没有合适的资源?快使用搜索试试~ 我知道了~
首页it面试算法题整理 全 包括笔试面试常考的 剑指offer 程序员面试宝典 各种排序算法等 自己总结的
资源详情
资源评论
资源推荐
、快速排序数组
int parons(int A[],int low,int high)
!""
!##
$
$
void qsort(int A[],int low,int high)
%
& '(())将第一次排序的结果作为枢轴
* (("))递归调用排序 由 到 !"
* (#())递归调用排序 由 !# 到
$
$
void main()
&+(,(-,(.-(,-(./(-0(/1(.(,1(-2$
* &(+(+
$
Java:
1. publicintgetMiddle(Integer[]list,intlow,inthigh){
2. inttmp=list[low];//数组的第一个作为中轴
3. while(low<high){
4. while(low<high&&list[high]>tmp){
5. high--;
6. }
7. list[low]=list[high];//比中轴小的记录移到低端
8. while(low<high&&list[low]<tmp){
9. low++;
10. }
11. list[high]=list[low];//比中轴大的记录移到高端
12. }
13. list[low]=tmp;//中轴记录到尾
14. returnlow;//返回中轴的位置
15. }
16. publicvoid_quickSort(Integer[]list,intlow,inthigh){
17. if(low<high){
18. intmiddle=getMiddle(list,low,high);//将 list 数组进行
一分为二
19. _quickSort(list,low,middle-1);//对低字表进行递归
排序
20. _quickSort(list,middle+1,high);//对高字表进行递归
排序
21. }
22. }
23. publicvoidquick(Integer[]str){
24. if(str.length>0){//查看数组是否为空
25. _quickSort(str,0,str.length-1);
26. }
27. }
28. publicclassTestMain{
29.
30. /**
31. *@paramargs
32. */
33. publicstaticvoidmain(String[]args){
34. //TODOAuto-generatedmethodstub
35. Integer[]list={34,3,53,2,23,7,14,10};
36. QuicSortqs=newQuicSort();
37. qs.quick(list);
38. for(inti=0;i<list.length;i++){
39. System.out.print(list[i]+"");
40. }
41. System.out.println();
42. }
43.
44. }
,、归并排序数组
具体操作过程:
将 个元素分成各含 ), 个元素的子序列
,用归并排序法对这两个子序列递归地排序
-合并这两个已经排序好的子序列得到排序结果
代码:
34&56+
!4 & &(7(8( ))归并排序中的合并算法
&54&56+$))临时数组
))第一个数组索引
9))第二个数组索引
))临时数组索引
% 7(98#(+ "7##))分别将 (9(指向各自数组的首部。
%8#))若 到第一个数组的尾部,将第二个数组余下元素复制到临时数组
&5& &9##'$
%9 #))若 9 到第二个数组的尾部,将第一个数组余下元素复制到临时数
组
&5& &##'$
%& && &9))第一个数组的当前元素较小,将其复制到临时数组
&5& &##$
&5& &9##$
$
))将有序的临时数组复制到 & &,7 起始位置,9+ 临时数组的起始位置
% 7(9+ ##(9##
& &&59$
$
!4 : & &(& ())归并排序
%&
#& ),
4 : & &(& ())对前半部分进行排序
4 : & &(#())对后半部分进行排序
4 & &(& (())合并前后两部分
$
$
8&
& 64&56;(.(,(-(/((0(2(+(1$
4 : & 6(+(4&56"
+
$
,、归并排序链表
struct node
{ int data;
node * next;
};
/* 对两个有序链表进行归并 */
node *MergeList(node *head1, node *head2)
{
node * tmp;
if(head1 == NULL) return head2;
if(head2 == NULL) return head1;
if(head1->data < head2->data)
{ tmp = head1;
head1 = head1->next; }
else
{ tmp = head2;
head2 = head2->next; }
tmp->next = MergeList(head1, head2); //经典
return tmp;
}
/* 归并排序,参数为要排序的链表的头结点,函数返回值为排序后的链表的头结点 */
node *MergeSort(node *head)
{
if(head == NULL)
return 0;
node * r_head = head;
node *head1 = head;
node* head2 = head;
while(head2->next != NULL && head2->next ->next!= NULL)
{
head1 = head1->next;
head2 = head2->next->next;
}
if(head1->next == NULL)/*说明只有一个节点,则返回该节点*/
return r_head;
head2 = head1->next;
head1->next = NULL;
head1 = head;
/*函数 MergeList 是对两个有序链表进行归并,返回值是归并后的链表的头结点*/
r_head = MergeList(MergeSort(head1), MergeSort(head2));
return r_head;
}
-、3<& 数列
()递归,=()
long long Fibonacci_Solution1(unsigned int n)
{
int result[2] = {0, 1};
if(n < 2)
return result[n];
return Fibonacci_Solution1(n - 1) + Fibonacci_Solution1(n - 2);
}
(,)两个变量,=()
long long Fibonacci_Solution2(unsigned n)
{
int result[2] = {0, 1};
if(n < 2)
return result[n];
long long fOne = 0;
long long fTwo = 1;
long long fibN = 0;
for(unsigned int i = 2; i <= n; ++ i)
{
fibN = fOne + fTwo;
fOne = fTwo;
fTwo = fibN;
}
' return fibN;
}
.、两个栈实现一个队列
某队列的声明如下:
template<typename T> class CQueue
{
public:
CQueue() {}
~CQueue() {}
void appendTail(const T& node); // append a element to tail
void deleteHead(); // remove a element from head'
private:
T>m_stack1;
T>m_stack2;
};
代码:
template<typename T> void CQueue<T>::appendTail(const T& element)
{
m_stack1.push(element); // push the new element into m_stack1
}'
// Delete the head from the queue
template<typename T> void CQueue<T>::deleteHead()
{
// if m_stack2is empty,and there are some
//elements inm_stack1, push them in m_stack2
if(m_stack2.size()<= 0)
{
while(m_stack1.size()>0)
剩余26页未读,继续阅读
lilijuan5377475
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 27页智慧街道信息化建设综合解决方案.pptx
- 计算机二级Ms-Office选择题汇总.doc
- 单链表的插入和删除实验报告 (2).docx
- 单链表的插入和删除实验报告.pdf
- 物联网智能终端项目设备管理方案.pdf
- 如何打造品牌的模式.doc
- 样式控制与页面布局.pdf
- 武汉理工Java实验报告(二).docx
- 2021线上新品消费趋势报告.pdf
- 第3章 Matlab中的矩阵及其运算.docx
- 基于Web的人力资源管理系统的必要性和可行性.doc
- 基于一阶倒立摆的matlab仿真实验.doc
- 速运公司物流管理模式研究教材
- 大数据与管理.pptx
- 单片机课程设计之步进电机.doc
- 大数据与数据挖掘.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1