目录
一.冒泡排序
冒泡排序从最左边开始,比较下标为0和后面一个元素的大小,如果出现前一个元素大于后一个元素就交换两个元素的位置,然后下标加1,直到元素比较完,此时元素的最后一个就是所有元素中最大的元素,循环比较,依次找出最大,次大的元素。
冒泡排序用到了两个for循环,时间复杂度为O()
冒泡排序代码:
public void bubblesort(int[] nums){
int in,out,stemp;
for (out=nums.length-1;out>1;out--){ //外循环out记录没有完成排序的元素个数
for (in=0;in<out;in++){ //内循环比较两个元素大小
if (nums[in] > nums[in+1]){
stemp=nums[in+1]; //如果满足条件,交换元素
nums[in+1]=nums[in];
nums[in]=stemp;
}
}
}
}
二.选择排序
选择排序算法思路是先从最左边两两比较,找到这些元素中最小的元素,然后将最小的元素移到最左边下标为0处,然后再找剩下中最小的,移动到下标为1处,循环如此。
时间复杂度度:O()
选择排序代码:
public void selectionsort(int[] nums){
int in,out,min;
int temp;
for (out=0;out< nums.length-1;out++){
min=out; //保证每一次out循环的min都是最左边的元素
for (in=out+1;in<nums.length;in++) {
if (nums[in] < nums[min]) {
//如果目标元素小于nums[min],交换下标,向后继续比较,直到找到最小元素
min = in;
}
}
//将最小的元素移动到最左边
temp = nums[min];
nums[min] = nums[out];
nums[out] = temp;
}
}
三.插入排序
插入排序将元素分为左右两边,左边已经排序好,右边没有排序,将右边的和左边的元素进行比较,找的该元素应该插入的位置然后插入。
插入排序时间复杂度:O(N)
插入排序代码:
public void insertionsort(int[] nums){
int out,in;
for (out=1;out<nums.length;out++){
int temp=nums[out]; //设置标志位
in=out;
while (in>0&&nums[in-1]>=temp){ //左边元素大于标志位元素
nums[in]=nums[in-1]; //元素后移,从而空出标志元素的位置
--in; //向左移动,连续和左边的元素比较,查找标志元素应该插入的位置
}
nums[in]= temp;
}
}