1、冒泡排序
思路:外层循环从1到n-1,内循环从当前外层的元素的下一个位置开始,依次和外层的元素比较,出现逆序就交换,通过与相邻元素的比较和交换来把小的数交换到最前面。
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;
}
}
}
2、选择排序
思路:冒泡排序是通过相邻的比较和交换,每次找个最小值。选择排序是:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
private static void sort(int[] array) {
int n = array.length;
for (int i = 0; i < n-1; i++) {
int min = i;
for (int j = i+1; j < n; j++) {
if (array[j] < array[min]){//寻找最小数
min = j; //将最小数的索引赋值
}
}
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
3、交换排序
void Changesort (int array[],int n)
{
int i, j, temp;
for(i=0; i<n-1; i++)
{
for(j=i+1; j<n; j++)
{
if(array[j] < array[i])//从低到高,升序排列
{
temp=array[j];
array[j]=array[i];
array[i]=temp;
}
}
}
}
4、qsort函数
void qsort(void * base, size_num, size_t size, int (*compare)(const void* ,const void *)
第一个参数是所要排序的数组,第二个是数组大小(元素个数),第三个参数是每个元素所占的字节,第四个元素是比较函数。
比较整数
#include<stdlib.h>
#include<stdio.h>
int compare(const void*a,const void *b)
{
int *pa=(int*)a;
int *pb=(int*)b;
int num1 =*pa;
int num2 =*pb;
if(num1-num2>0)return 1;//从小到大排序
else if( num1-num2<0) return -1;
}
int main()
{
int a[N];
qsort (a, N, sizeof(a[0]), compare);
return 0;
}
(比较小数类似,只需把int类型换成float或double,比较结构体同理)
其他方法参考>https://www.cnblogs.com/flyingdreams/p/11161157.html