java|偶遇排序算法
一、选择排序
java
选择排序示例
/**
* Describe : java选择排序
*/
import java.util.Arrays;
public class Sort {public static void main(String[] args) {int[] arr = {
2, 5, 4, 6, 1, 2, 3, 6, 9, 4, 8, 5 };
for (int i = 0, index = 0;
i < arr.length;
i++, index++) {int min = arr[index];
int minIndex = index;
for (int j = index + 1;
j < arr.length;
j++) {if (min > arr[j]) {min = arr[j];
minIndex = j;
}
}
int temp = arr[index];
arr[index] = min;
arr[minIndex] = temp;
}
Arrays.toString(arr)
}
}
C++
选择排序示例
/**
* Describe : C++选择排序
*/
#include
#include
using namespace std;
int main()
{vector arr = {
2, 5, 4, 6, 1, 2, 3, 6, 9, 4, 8, 5};
for (int i = 0, index = 0;
i < arr.size();
i++, index++)
{int min = arr[index];
int minIndex = index;
for (int j = index + 1;
j < arr.size();
j++)
{if (min > arr[j])
{min = arr[j];
minIndex = j;
}
}
int temp = arr[index];
arr[index] = min;
arr[minIndex] = temp;
}
for (int i : arr)
{cout << i << ' ';
}
}
二、冒泡排序
java
冒泡排序示例
import java.util.Arrays;
/**
* Describe : java冒泡排序
*/
public class BubbleSort {public static void main(String[] args) {int[] arr = {
2, 5, 4, 6, 1, 2, 3, 6, 9, 4, 8, 5 };
for (int i = 0;
i < arr.length - 1;
i++) {for (int j = 0;
j < arr.length - 1 - i;
j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
C++
冒泡排序示例
/**
* Describe : C++冒泡排序
*/
#include
#include
using namespace std;
int main()
{vector arr = {
2, 5, 4, 6, 1, 2, 3, 6, 9, 4, 8, 5};
for (int i = 0;
i < arr.size() - 1;
i++)
{for (int j = 0;
j < arr.size() - 1 - i;
j++)
{if (arr[j] > arr[j + 1])
{int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}for (int i : arr)
{cout << i << ' ';
}
}
插入排序
java
插入排序示例
import java.util.Arrays;
/**
* Describe : Java插入排序
*/
public class InsertSort {public static void main(String[] args) {int[] arr = {
2, 5, 4, 6, 1, 2, 3, 6, 9, 4, 8, 5 };
for (int index = 1;
index < arr.length;
index++) {// 当前开始插入第几个
int current = arr[index];
// 从当前的数往前找,在到达0索引前找大于或等于当前的数的索引
int pos = index;
while (pos > 0 && current < arr[pos - 1]) {// 比当前的大的,都放到当前的后边
arr[pos] = arr[pos - 1];
pos--;
}
arr[pos] = current;
}
System.out.println(Arrays.toString(arr));
}
}
C++
插入排序示例
/**
* Describe : C++插入排序
*/
#include
#include
using namespace std;
int main()
{vector arr = {
2, 5, 4, 6, 1, 2, 3, 6, 9, 4, 8, 5};
for (int index = 1;
index < arr.size();
index++)
{// 当前开始插入第几个
int current = arr[index];
// 从当前的数往前找,在到达0索引前找大于或等于当前的数的索引
int pos = index;
while (pos > 0 && current < arr[pos - 1])
{// 比当前的大的,都放到当前的后边
arr[pos] = arr[pos - 1];
pos--;
}
arr[pos] = current;
}
for (int i : arr)
{cout << i << ' ';
}
return 0;
}
快速排序
java
快速排序示例
import java.util.Arrays;
/**
* Describe : C++快速排序
*/public class SpeadSort {static int[] arr = {
2, 5, 4, 6, 1, 2, 3, 6, 9, 4, 8, 5 };
/**
* @brief 划区调整,以每个区的第一个元素为基准元素,把比最初的第一个元素小的,全放到左边
*
* @param left左边界
* @param right 右边界(不计)
* @param arr数组
*/
static void f(int left, int right) {// 当右边界只比左边界大1时,不需要进行调整
if (left >= right - 1) {return;
}
// 最初的左边界索引,基准数值索引
int baseIndex = left;
for (int i = left + 1;
i < right;
++i) {// 比基准数值小的放到基准数值左边
if (arr[baseIndex] > arr[i]) {int temp = arr[i];
int tempIndex = i;
while (tempIndex != baseIndex) {arr[tempIndex] = arr[tempIndex - 1];
tempIndex--;
}
arr[baseIndex] = temp;
// 此时的基准数值已经左移了1
baseIndex++;
}
}
// 调整完成后左部分进行调整
f(left, baseIndex);
// 调整完成后右部分进行调整
f(baseIndex + 1, right);
}public static void main(String[] args) {f(0, arr.length);
System.out.println(Arrays.toString(arr));
}}
C++
快速排序示例
/**
* Describe : C++快速排序
*/#include
#include
using namespace std;
/**
* @brief 划区调整,以每个区的第一个元素为基准元素,把比最初的第一个元素小的,全放到左边
*
* @param left 左边界
* @param right 右边界(不计)
* @param arr 数组
*/
void f(int left, int right, vector &arr)
{// 当右边界只比左边界大1时,不需要进行调整
if (left >= right - 1)
{return;
}
//最初的左边界索引,基准数值索引
int baseIndex = left;
for (int i = left + 1;
i < right;
++i)
{//比基准数值小的放到基准数值左边
if (arr[baseIndex] > arr[i])
{int temp = arr[i];
int tempIndex = i;
while (tempIndex != baseIndex)
{arr[tempIndex] = arr[tempIndex - 1];
tempIndex--;
}
arr[baseIndex] = temp;
//此时的基准数值已经左移了1
baseIndex++;
}
}
// 调整完成后左部分进行调整
f(left, baseIndex, arr);
// 调整完成后右部分进行调整
f(baseIndex + 1, right, arr);
}int main()
{vector arr = {
2, 5, 4, 6, 1, 2, 3, 6, 9, 4, 8, 5};
f(0, arr.size(), arr);
for (int i : arr)
{cout << i << ' ';
}
return 0;
}
【java|偶遇排序算法】个人博客:
https://www.blog.hiyj.cn/admin/#/article/edit/111
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- 数组常用方法一
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- 一个选择排序算法
- Java|Java基础——数组
- RxJava|RxJava 在Android项目中的使用(一)
- java之static、static|java之static、static final、final的区别与应用